停靠窗口在界面编辑中经常使用到,其创建过程一般如下:
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);
}
之后直接编译运行,结果如下: