第三章 Qt5布局管理——3.2停靠窗口QDockWidget
目录
一、设置停靠窗口的一般流程:
二、设置窗口属性
setFeatures()方法设置停靠窗体的特性:
setAllowedAreas()方法设置停靠窗体可停靠的区域:
一、设置停靠窗口的一般流程:
(1)创建一个QDockWidget对象的停靠窗体。
(2)设置此停靠窗体的属性,通常调用setFeatures()"[停靠窗体属性]"及setAllowedAreas()"[设置停靠窗体可停靠的区域]"两种方法。
(3)新建一个要插入停靠窗体的控件,常用的有QListWidget和QTextEdit。
(4)将控件插入停靠窗体,调用QDockWidget和setWidget()方法。
(5)使用addDockWidget()方法在MainWindow中加此停靠窗口。
例子:
窗口1只能在主窗口的左边和右边停靠;窗口2只在浮动和右部停靠两种状态间切换,并且不可移动;窗口3可实现停靠窗口的各种状态。程序运行如下:

#include "mainwindow.h"
#include <QDockWidget>
#include <QTextEdit>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{setWindowTitle(tr("DockWindows"));//设置主窗口的标题栏文字QTextEdit * te = new QTextEdit(this);//定义一个QTextEdit对象作为主窗口te->setText(tr("Main Window"));te->setAlignment(Qt::AlignCenter);setCentralWidget(te);//将此编辑框设为主窗口的中央窗口//停靠窗口1QDockWidget * 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 moved between docks by the user"));dock->setWidget(te1);addDockWidget(Qt::RightDockWidgetArea,dock);//停靠窗口2dock = 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);//停靠窗口3dock = new QDockWidget(tr("DockWindow3"),this);dock->setFeatures(QDockWidget::AllDockWidgetFeatures);//有停靠窗体的所有属性QTextEdit * te3 = new QTextEdit();te3->setText(tr("Window3,The dock widget can be closed, moved, and floated"));dock->setWidget(te3);addDockWidget(Qt::RightDockWidgetArea,dock);
}MainWindow::~MainWindow()
{}
二、设置窗口属性
setFeatures()方法设置停靠窗体的特性:
QDockWidget::DockWidgetClosable:停靠窗口可以关闭
QDockWidget::DockWidgetMovable:停靠窗口可以移动
QDockWidget::DockWidgetFloatable:停靠窗口可以浮动
QDockWidget::AllDockWidgetFeatures:拥有停靠窗口的所有特性
QDockWidget::NoDockWidgetFeatures:不能移动、不能关闭、不能浮动
setAllowedAreas()方法设置停靠窗体可停靠的区域:
Qt::LeftDockWidgetArea:可在主窗口的左侧停靠
Qt::RightDockWidgetArea:可在主窗口的右侧停靠
Qt::TopDockWidgetArea:可在主窗口的顶部停靠
Qt::BottomDockWidgetArea:可在主窗口的底部停靠
Qt::AllDockWidgetAreas:可在主窗口任意位置(以上四个)停靠
Qt::NoDockWidgetArea:只可停靠在插入处