概述
停靠窗口QDockWidget类是应用程序中经常用到的,设置停靠窗口的一般流程如下
(1)创建一个QDockWidget对象的停靠窗口
(2)设置此停靠窗口的属性,通常调用setFeatures()及setAllowedAreas()两种方法
(3)新建一个要插入停靠窗体的控件,常用的有QListWidget和QTextEdit
(4)将控件插入停靠窗体,调用QDockWidget的setWidget()方法
(5)使用addDockWidget()方法在MainWindow中加入此停靠窗体
代码
#include "dockwindows.h"
#include <QTextEdit>
#include <QDockWidget>
DockWindows::DockWindows(QWidget *parent)
: QMainWindow(parent)
{
setWindowTitle(tr("DockWindwos")); //设置主窗口的标题栏文字
QTextEdit *te=new QTextEdit(this); //定义一个QTextEdit对象作为主窗口
te->setText(tr("Main Window"));
te->setAlignment(Qt::AlignCenter);
setCentralWidget(te); //将此编辑框设为主窗口的中央窗体
//停靠窗口1
QDockWidget *dock=new QDockWidget(tr("DockWindow1"),this);
//可移动
dock->setFeatures(QDockWidget::DockWidgetMovable);
//设定停靠窗口可停靠的区域
dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
QTextEdit *te1=new QTextEdit();
te1->setText(tr("window1,the dock widget can be move 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); //可关闭,可浮动
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"));
dock->setWidget(te2);
addDockWidget(Qt::RightDockWidgetArea,dock);
//停靠窗口3
dock=new QDockWidget(tr("DockWindow3"),this);
dock->setFeatures(QDockWidget::AllDockWidgetFeatures); //全部特性
QTextEdit *te3=new QTextEdit();
te2->setText(tr("Window3, the dock widget can be closed ,moved,and"
"floated"));
dock->setWidget(te3);
addDockWidget(Qt::RightDockWidgetArea,dock);
}
setFeatures(DockWidgetFeatures features)设置停靠窗体的特性
QDockWidget::DockWidgetClosable //停靠窗体可以关闭
QDockWidget::DockWidgetFloatable //停靠窗体可浮动
QDockWidget::DockWidgetMovable //停靠窗体可移动
QDockWidget::AllDockWidgetFeatures //此参数表示拥有停靠窗体的全部属性
QDockWidget::NoDockWidgetFeatures //不可移动,不可关闭,不可浮动
此参数可以采用或(|)的方式对停靠窗体进行特性的设定
setAllowedAreas()设置停靠窗体可停靠的区域
Qt::LeftDockWidgetArea //可在主窗口的左侧停靠
Qt::RightDockWidgetArea //可在主窗口的右侧停靠
Qt::TopDockWidgetArea //可在主窗口的上侧停靠
Qt::BottomDockWidgetArea //可在停靠主窗口的底部停靠
Qt::AllDockWidgetAreas //可在主窗口的任意部分停靠
Qt::NoDockWidgetArea //只停靠在插入处
此参数可以采用或(|)的方式对停靠区域进行设置
运行结果
参考资料
1 《Qt5开发及实例》