【转】QDockWidget 停泊窗口和工具栏
【转】QDockWidget 停靠窗口和工具栏?转:http://blog.csdn.net/a649518776/article/details/6636490?下面用
【转】QDockWidget 停靠窗口和工具栏
?
转:http://blog.csdn.net/a649518776/article/details/6636490

?
下面用代码实现上面窗口的设计:
1.建立项目时基类选择QMainWindow,取消Gernerate form复选框的选中状态。
2.在源文件mainwindow.cpp中编写如下代码:
#include?"mainwindow.h"??#include?<QTextEdit>??#include?<QDockWidget>??MainWindow::MainWindow(QWidget?*parent)??????:?QMainWindow(parent)??{??????//设置主窗口??????setWindowTitle(tr("DockWindwos"));??????QTextEdit?*te=new?QTextEdit(this);??????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?floated?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()??{????}??
?
?
解析:
1.创建一个QDockWidget对象的停靠窗体:
?
QDockWidget?*dock=new?QDockWidget(tr("DockWindow1"),this);第一个参数是停靠窗体的名称,第二个参数是停靠窗体的父窗体。
?
2.设置此停靠窗体的属性:
dock->setFeatures(QDockWidget::DockWidgetMovable);
?
设置停靠窗体特性:
×可关闭:
有一个关闭按钮
×可移动:

将DockWindow移动到左边了。
×可浮动:

DockWindow3可以单独脱离主窗口浮动出来。
×其他参数:
QDockWidget::AllDockWidgetFeatures //拥有所有属性QDockWidget::NoDockWidgetFeatures //不可移动,不可关闭,不可浮动
?
3.将TextEdit加入停靠窗体
dock->setWidget(te1);
?
4.将停靠窗体加入主窗体中
addDockWidget(Qt::RightDockWidgetArea,dock);
?
最后编译运行:
