Qt5布局管理(二)——QDockWidget停靠窗口类
来源:互联网 发布:linux定时器函数 编辑:程序博客网 时间:2024/05/16 11:31
停靠窗口类QDockWidget
Code @github:https://github.com/LeeHDsniper/LearnQt/tree/master/CH302
实例效果
如右图所示,左半部分MainWindow是该窗口的中心窗口,右边的最下面两个停靠窗口可以跳出该窗口:
但是第一个停靠窗口只能停靠在右边或者左边,不能跳出。
同时各个窗口的大小可以调节。
另外,各个窗口可以合并:
重要代码
#include "dockwindows.h"#include <QTextEdit>#include <QDockWidget>DockWindows::DockWindows(QWidget *parent) : QMainWindow(parent){ setWindowTitle(tr("DockWindows"));//设置主窗口的标题栏文字 QTextEdit *te=new QTextEdit(this);//定义一个QTextEdit对象作为主窗口 te->setText(tr("Main Window")); te->setAlignment(Qt::AlignCenter); setCentralWidget(te); //将此编辑框作为主窗体的中央窗体 //停靠窗口1 QDockWidget *dock1=new QDockWidget(tr("DockWindow1"),this); QDockWidget *dock2=new QDockWidget(tr("DockWindow2"),this); QDockWidget *dock3=new QDockWidget(tr("DockWindow3"),this); //可移动 dock1->setFeatures(QDockWidget::DockWidgetMovable); dock1->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea); QTextEdit *te1=new QTextEdit(); te1->setText(tr("Window1,The dock widget can be moved between dicks by user" "")); dock1->setWidget(te1); addDockWidget(Qt::RightDockWidgetArea,dock1); //停靠窗口2 //dock2=new QDockWidget(tr("DockWindow2"),this); dock2->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable); QTextEdit *te2=new QTextEdit(); te2->setText(tr("Window2,The dock widget can be detached from the main window," """and floated as an independent window,and can be closed" )); dock2->setWidget(te2); addDockWidget(Qt::RightDockWidgetArea,dock2); //停靠窗口3 //dock3=new QDockWidget(tr("DockWindow3"),this); dock3->setFeatures(QDockWidget::AllDockWidgetFeatures); QTextEdit *te3=new QTextEdit(); te3->setText(tr("Window3,The dock widget can be closed,moved,add floated")); dock3->setWidget(te3); addDockWidget(Qt::RightDockWidgetArea,dock3);}DockWindows::~DockWindows(){}
line 17:
dock1->setFeatures(QDockWidget::DockWidgetMovable);
这个函数设置停靠窗口是否可移动,可关闭,可悬浮。
在这个持续中,第一个停靠窗口只能移动,第二个窗口不可移动,也就是说它只能悬浮或者关闭,不能出现在第一个或者第三个停靠窗口的位置,第三个窗口则具备了上述所有属性。下面是Qt文档的解释:This property holds whether the dock widget is movable, closable, and floatable.
By default, this property is set to a combination of DockWidgetClosable, DockWidgetMovable and DockWidgetFloatable.QDockWidget的隐式共享
在前面讲QString时提到了隐式共享,其实隐式共享同样支持所有的容器类,QDockWidget就是其中之一。
可以看到,我定义了三个QDockWidget对象:dock1,dock2,dock3。事实上,只需要一个QDockWidget对象就足够了,只需要在每个停靠窗口初始化的时候重新初始化这个dock对象。
那么就会出现一个问题,在addDockWidget(Qt::RightDockWidgetArea,dock2);
这段代码中(出现了三次),如果只用一个dock,会不会使已定义的dock对象不见了?如果这个dock是C++中的一个引用的话,确实会导致对象被覆盖。但是Qt的隐式共享解决了这个问题,有关隐式共享的问题之前已经解释过了:http://blog.csdn.net/leehdsniper/article/details/50975227。
- Qt5布局管理(二)——QDockWidget停靠窗口类
- Qt5—嵌入停靠窗口QDockWidget
- 【Qt5开发及实例】4、布局管理之停靠窗口QDockWidget类
- Qt5—可停靠窗口QDockWidget [2013-10-19整理]
- QT窗口布局-停靠窗口类QDockWidget
- Qt布局管理: 停靠窗口QDockWidget类(纯代码实现)
- 布局管理(分割窗口QSplitter类、停靠窗口QDockWidget类、堆栈窗体QStackedWidget类、基本布局(QLayout))
- 停靠窗口QDockWidget类
- QT5布局管理--停靠窗口QDock Widget
- qdockwidget停靠窗口,
- QT--QDockWidget 停靠窗口
- Qt之布局管理——停靠窗口
- Qt之布局管理——停靠窗口
- Qt学习——停靠窗体QDockWidget类
- Qt学习——停靠窗体QDockWidget类 .
- Qt学习——停靠窗体QDockWidget类
- Qt学习——停靠窗体QDockWidget类
- Qt学习——停靠窗体QDockWidget类
- C#中的异步调用例子
- 获取系统信息
- HDU-4966 GGS-DDU (最小树形图(有向图的最小生成树)[朱刘算法])
- 全面理解Javascript闭包和闭包的几种写法及用途
- 多线程初探
- Qt5布局管理(二)——QDockWidget停靠窗口类
- iOS开发之瀑布流
- Java爬虫(一)利用GET和POST发送请求,获取服务器返回信息
- 使用HttpURLConnection代替HttpClient
- 职业发展之面试技巧
- c++基类和派生类
- 后台服务选择
- typedef struct
- CryptoAPI与openssl数字签名与验证交互