Qt 布局管理之 停靠窗口QDockWidget

简介: Qt 布局管理之 停靠窗口QDockWidget

停靠窗口QDockWidget类也是应用程序中经常用到的,设置停靠窗口的一般流程如下。

(1)创建一个QDockWidget对象的停靠窗体。

(2)设置此停靠窗体的属性,通常调用setFeatures()及setAllowedAreas()两种方法。

(3)新建一个要插入停靠窗体的控件,常用的有QListWidget和QTextEdit。

(4)将控件插入停靠窗体,调用QDockWidget的setWidget()方法。

(5)使用addDockWidget()方法在MainWindow中加入此停靠窗体。

DockWindows.h

#ifndef DOCKWINDOWS_DOCKWINDOWS_H
#define DOCKWINDOWS_DOCKWINDOWS_H
#include <QMainWindow>
class DockWindows: public QMainWindow{
    Q_OBJECT
public:
    explicit DockWindows(QWidget*parent=0);
    ~DockWindows();
};
#endif //DOCKWINDOWS_DOCKWINDOWS_H
### DockWindows.cpp
#include "DockWindows.h"
#include <QTextEdit>
#include <QDockWidget>
DockWindows::DockWindows(QWidget *parent): QMainWindow(parent) {
    setWindowTitle(tr("DockWindows"));//主窗口标题栏
auto *te = new QTextEdit(this);
    te->setText(tr("Main Window"));
    te->setAlignment(Qt::AlignCenter);
    setCentralWidget(te);//将此窗口设置为主窗口的中央窗口
//停靠窗口1
auto *dock = new QDockWidget(tr("DockWindow1"), this);
//    可移动
    dock->setFeatures(QDockWidget::DockWidgetMovable);
    dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
auto *te1 = new QTextEdit;
    te1->setText(tr("Window1 ,the dock widget can be moved between docks by the user"));
    dock->setWidget(te1);
    addDockWidget(Qt::RightDockWidgetArea,dock);
//停靠窗口2
    dock = new QDockWidget(tr("DockWindow2"), this);
    dock->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable);//可关闭可浮动
auto *te2 = new QTextEdit(tr("Window2 The dock widget can be detached from the main window,and floated as an independent window,and can be closed"));
    dock->setWidget(te2);
    addDockWidget(Qt::RightDockWidgetArea,dock);
//停靠窗口3
    dock = new QDockWidget(tr("DockWindow3"),this);
    dock->setFeatures(QDockWidget::AllDockWidgetFeatures);//全部特性
auto *te3 = new QTextEdit();
    te3->setText(tr("Window3,the dock widget can be cllose moved and floated"));
    dock->setWidget(te3);
    addDockWidget(Qt::RightDockWidgetArea,dock);
}
DockWindows::~DockWindows() {
}

main.cpp

#include <QApplication>
#include <QPushButton>
#include "DockWindows.h"
int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
   DockWindows d;
   d.show();
return QApplication::exec();
}

目录
相关文章
|
4月前
【qt】 QGridLayout布局管理器怎么用?
【qt】 QGridLayout布局管理器怎么用?
176 0
|
4月前
|
C++ Windows
Qt 窗口置顶
Qt 窗口置顶
127 1
|
4月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
316 3
|
4月前
【qt】视口和窗口坐标
【qt】视口和窗口坐标
37 0
|
4月前
|
算法 数据安全/隐私保护
【qt】启动窗口的玩法
【qt】启动窗口的玩法
35 0
|
4月前
【qt】多窗口开发
【qt】多窗口开发
68 0
|
5月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
199 1
Qt(C++)开发一款图片防盗用水印制作小工具
|
4月前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
109 0