目录
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);//将此编辑框设为主窗口的中央窗口
//停靠窗口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 moved 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();
te3->setText(tr("Window3,The dock widget can be closed, moved, and floated"));
dock->setWidget(te3);
addDockWidget(Qt::RightDockWidgetArea,dock);
}
MainWindow::~MainWindow()
{
}
QDockWidget::DockWidgetClosable:停靠窗口可以关闭
QDockWidget::DockWidgetMovable:停靠窗口可以移动
QDockWidget::DockWidgetFloatable:停靠窗口可以浮动
QDockWidget::AllDockWidgetFeatures:拥有停靠窗口的所有特性
QDockWidget::NoDockWidgetFeatures:不能移动、不能关闭、不能浮动
Qt::LeftDockWidgetArea:可在主窗口的左侧停靠
Qt::RightDockWidgetArea:可在主窗口的右侧停靠
Qt::TopDockWidgetArea:可在主窗口的顶部停靠
Qt::BottomDockWidgetArea:可在主窗口的底部停靠
Qt::AllDockWidgetAreas:可在主窗口任意位置(以上四个)停靠
Qt::NoDockWidgetArea:只可停靠在插入处