zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Qt创建停靠悬浮窗口实例

Qt实例 创建 窗口 悬浮
2023-09-11 14:16:45 时间

Qt 创建停靠悬浮窗口 QDockWidget

1.Qt实现窗口停靠和悬浮使用类QDockWidget,它有两个重要方法用来设置停靠特性以及停靠区域,

1 dw1->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable);//设置停靠窗口特性,可移动,可关闭
2 dw1->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);//设置可停靠区域为主窗口左边和右边

2.将一个空间插入停靠窗体使用setWidget方法

dw1->setWidget(dte);

3.它的构造方法之一是:指定标题和父窗口

QDockWidget *dw1 = new QDockWidget("停靠窗口1",this);//构建停靠窗口,指定父类

4.在主窗口加入悬浮窗使用addDockWidget,并且可以指定停靠区域

addDockWidget(Qt::RightDockWidgetArea,dw1);

5.看创建停靠窗口完整代码

 1 #include "dockwindow.h"
 2 #include<QTextEdit>
 3 #include <QDockWidget>
 4 
 5 DockWindow::DockWindow(QWidget *parent)
 6     : QMainWindow(parent)
 7 {
 8 
 9     setWindowTitle("停靠窗口");
10 
11     QTextEdit *te = new QTextEdit("MainWindow",this);
12     te->setAlignment(Qt::AlignCenter);
13     setCentralWidget(te);
14 
15     //停靠窗口1
16     QDockWidget *dw1 = new QDockWidget("停靠窗口1",this);//构建停靠窗口,指定父类
17 
18     dw1->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable);//设置停靠窗口特性,可移动,可关闭
19 
20     dw1->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);//设置可停靠区域为主窗口左边和右边
21 
22     QTextEdit *dte = new QTextEdit("DockWindow First");
23     dw1->setWidget(dte);
24     addDockWidget(Qt::RightDockWidgetArea,dw1);
25 
26     //停靠窗口2
27     QDockWidget *dw2 = new QDockWidget("停靠窗口2",this);//构建停靠窗口,指定父类
28 
29     dw2->setFeatures(QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetClosable);//设置停靠窗口特性,可浮动,可关闭
30 
31     QTextEdit *dte2 = new QTextEdit("DockWindow Second");
32     dw2->setWidget(dte2);
33     addDockWidget(Qt::RightDockWidgetArea,dw2);
34 
35     //停靠窗口3
36     QDockWidget *dw3 = new QDockWidget("停靠窗口3",this);//构建停靠窗口,指定父类
37 
38     dw3->setFeatures(QDockWidget::AllDockWidgetFeatures);//设置停靠窗口特性,具有全部停靠窗口的特性
39 
40     QTextEdit *dte3 = new QTextEdit("DockWindow Third");
41     dw3->setWidget(dte3);
42     addDockWidget(Qt::RightDockWidgetArea,dw3);
43 
44 
45 }

/***********************************************

QT+ 状态栏+核心控件+浮动窗口

#include "mainwindow.h"

#include <QStatusBar>
#include <QLabel>
#include<QTextEdit>
#include <QDockWidget>//浮动窗口所需的头文件
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)

{

    this ->setFixedSize(520,590);

    //状态栏
        QStatusBar *statusBar1 =  statusBar();
        QLabel *label = new QLabel(this);
        label ->setText("Normal Text File");
        statusBar1->addWidget(label);

        //addWidget 从左往右添加
        statusBar1->addWidget(new QLabel("123123",this));

        //addPermanentWidget 从右向左添加
        statusBar1 ->addPermanentWidget(new QLabel("456456",this));


    //核心控件
        QTextEdit *textEdit = new QTextEdit(this);  
        setCentralWidget(textEdit);
    //浮动窗口
        QDockWidget *dock = new QDockWidget(this);
        addDockWidget(Qt::RightDockWidgetArea,dock);
        //在浮动窗口上添加一个编辑器 即给浮动的窗口添加控件
        QTextEdit *textEdit1 = new QTextEdit(this);
        dock ->setWidget(textEdit1);

}

MainWindow::~MainWindow()
{

}

以下是默认的:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
};

#endif // MAINWINDOW_H