(1)创建一个QDockWidget对象的停靠窗口。
(2)设置它的属性,长用两个方法:setFeature() 和 setAllowedAreas()。
(3)新建一个要插入停靠窗口的控件,常用的有 QListWidget 和 QTextEdit
(4)将控件插入停靠窗口,调用QDockWidget的setWidget()方法。
(5)使用addDockWidget()方法在MainWindow中加入此停靠窗口。
效果图:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDockWidget>
#include <QTextEdit>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setWindowTitle(tr("Dockwindows"));
QTextEdit *text = new QTextEdit(tr("Main Windows"), this);
text->setAlignment(Qt::AlignCenter);
setCentralWidget(text);
// dockwinw1可以移动,可以移动到左边或者右边,初始化在右边。
QDockWidget *dock = new QDockWidget(tr("Dockwindow1"), this);
dock->setFeatures(QDockWidget::DockWidgetMovable);
dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
QTextEdit *te1 = new QTextEdit(tr("movable"));
dock->setWidget(te1); //在DockWindow1下面加了一个te1的widget
addDockWidget(Qt::RightDockWidgetArea, dock);
//dockwindow2可以浮动,可以关闭,初始化在右边。
dock = new QDockWidget(tr("Dockwindow2"), this);
dock->setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetFloatable);
QTextEdit *tel2 = new QTextEdit(tr("floatable, closable"));
dock->setWidget(tel2);
addDockWidget(Qt::RightDockWidgetArea, dock);
//dockwindow3可以浮动,可以关闭,可以移动,初始化在右边。
dock =new QDockWidget(tr("Dockwindow3"), this);
dock->setFeatures(QDockWidget::AllDockWidgetFeatures);
QTextEdit *tel3 = new QTextEdit(tr("floatable, movable, closable"));
dock->setWidget(tel3);
addDockWidget(Qt::RightDockWidgetArea, dock);
}
MainWindow::~MainWindow()
{
delete ui;
}