停靠窗口在界面编辑中经常使用到,其创建过程一般如下:
1、创建一个QDockWidget对象的停靠船体
2、设置此停靠窗体的属性,如setFeatures() 及setAllowedAreas().
3、新建一个要插入的停靠窗体控件。常常有QListWidget、QTextEdit.
4、将控件插入到停靠窗体,调用QDockWidget的setWidget()方法。
5、使用addDockwidget()方法在MianWindow中加入停靠窗体。
如下实例:
首先创建一个Qt widget Application ,基类选QMainwindow。
此处,需要注意的是,创建界面选择需要取消,无需选中。直接点击下一步,完成工程创建。
工程创建完成后,生成 dockwindow.h/cpp main.cpp 以及 dockwidget.pro文件。
在完成如上步骤后,在DcokWindow类中添加停靠窗体,代码如下:
#include "dockwindow.h" #include <QTextEdit> #include <QDockWidget> DockWindow::DockWindow(QWidget *parent) : QMainWindow(parent) { //设置主窗体的标题栏名词 setWindowTitle("DockWindows"); //定义一个QTextEdit 对象 QTextEdit* text = new QTextEdit(this); text->setText(tr("Mian Window")); text->setAlignment(Qt::AlignCenter); //将此QTextEdit 设为主窗体的中央窗体 setCentralWidget(text); //dockwindow 1 //创建一个QDockWidget对象停靠窗体 QDockWidget* dock1 = new QDockWidget(tr("DockWindow1"),this); //设置此停靠窗体的属性 dock1->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable); dock1->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); //新建一个要插入停靠船体的控件QTextEdit QTextEdit* edit1 = new QTextEdit(); edit1->setText(tr("Window1,the dock widget can be moved between docks and the user ")); //将控件插入到停靠窗体 dock1->setWidget(edit1); //在MainWindow中添加停靠窗体 addDockWidget(Qt::RightDockWidgetArea,dock1); //dockwindow2 QDockWidget* dock2 = new QDockWidget(tr("DockWindow2"),this); dock2->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable); dock2->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); QTextEdit* edit2 = new QTextEdit(); edit2->setText(tr("Window2,the dock widget can be moved between docks and the user ")); dock2->setWidget(edit2); addDockWidget(Qt::RightDockWidgetArea,dock2); }
之后直接编译运行,结果如下:
