【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
? ? ? ? 在软件开发中,一般有主窗口和子窗口之分。主窗口也就是main window,是最重要的操作界面。子窗口就是各种属性配置、参数配置弹出来的窗口。还有一种窗口,用的也比较多,它是那种类似于窗口内部的子窗口,可以关闭,也可以打开。这种窗口就是dock窗口。大家如果平时在windows平台经常使用ms2017进行软件开发的话,应该就会经常看到这种dock窗口,使用还是非常广泛的。它比子窗口灵活,可以长期驻留,但是也和子窗口一样,能够随开随关。
? ? ? ? 今天,正好借着qt学习的机会,学习一下怎么使用dock窗口。
? ? ? ? 和之前一样,我们首先需要创建一个qt widget工程,为后续代码添加打下基础。
? ? ? ? 因为主要的修改都是在cpp文件完成的,所以本次头文件不做修改。
? ? ? ? 源文件的修改主要集成在构造函数里面。首先,我们创建一个QTextEdit的变量centralWidget,并且把它通过addCentralWidget函数添加到窗口当中。接着,我们创建了一个QDockWidget的变量dockWidget,并且继续在这个dockWidget里面添加了一个QLabel。最后,这个dockWidget通过函数addDockWidget添加到了窗口当中。整个过程就是这么来处理的。
? ? ? ? 在这中间,因为涉及到了QTextEdit、QDockWidget、QLabel,所以相应的头文件要及时加上,不然会编译报错。
#include <QLabel>
#include <QDockWidget>
#include <QTextEdit>
#include "QtWidgetsApplication.h"
QtWidgetsApplication::QtWidgetsApplication(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
// 创建主窗口中心的文本编辑框
QTextEdit *centralWidget = new QTextEdit(this);
setCentralWidget(centralWidget);
// 创建一个QDockWidget
QDockWidget *dockWidget = new QDockWidget("Dock Window", this);
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
// 在QDockWidget中放置一些内容
QLabel *label = new QLabel("Dock Content", dockWidget);
dockWidget->setWidget(label);
// 将QDockWidget添加到主窗口
addDockWidget(Qt::RightDockWidgetArea, dockWidget);
}
QtWidgetsApplication::~QtWidgetsApplication()
{}
? ? ? ? dock窗口的测试和验证还是比较简单的,主要就是查看编译有无问题,能不能正常启动。正常启动后,dock是不是肉眼可见,并且dock是不是可以正常关闭、dock边界上是否可以左右拖动等等。如果这些都没有问题的话,基本上代表dock已经可以用起来了。