头文件:
#include <QDockWidget>
代码段:
this->setWindowTitle("QDockWidget示例");
QTextEdit *text = new QTextEdit(this);
text->setText(QStringLiteral("主窗口"));
text->setAlignment(Qt::AlignCenter);
//设置中心窗口
setCentralWidget(text);
QDockWidget *dock1 = new QDockWidget(tr("DockWindow1"),this);
//设置窗口的状态 可移动
dock1->setFeatures(QDockWidget::DockWidgetMovable);
//设置窗口被允许放位置
dock1->setAllowedAreas(Qt::AllDockWidgetAreas);
QTextEdit *text1 = new QTextEdit();
text1->setText(QStringLiteral("窗口一"));
dock1->setWidget(text1);
//设置窗口的初始位置 在顶部位置
addDockWidget(Qt::TopDockWidgetArea,dock1);
QDockWidget *dock2 = new QDockWidget(tr("DockWindow2"),this);
dock2->setFeatures(QDockWidget::DockWidgetMovable);
dock2->setAllowedAreas(Qt::AllDockWidgetAreas);
QTextEdit *text2 = new QTextEdit();
text2->setText(QStringLiteral("窗口二"));
dock2->setWidget(text2);
//在左边的位置
addDockWidget(Qt::LeftDockWidgetArea,dock2);
QDockWidget *dock3 = new QDockWidget(tr("DockWindow3"),this);
dock3->setFeatures(QDockWidget::DockWidgetMovable);
dock3->setAllowedAreas(Qt::AllDockWidgetAreas);
QTableWidget *tablewidget = new QTableWidget(this);
tablewidget->setColumnCount(3);
tablewidget->setRowCount(1);
QTableWidgetItem *item1 = new QTableWidgetItem;
QTableWidgetItem *item2 = new QTableWidgetItem;
QTableWidgetItem *item3 = new QTableWidgetItem;
item1->setText(QStringLiteral("内容1"));
item2->setText(QStringLiteral("内容2"));
item3->setText(QStringLiteral("内容3"));
tablewidget->setItem(0, 0, item1);
tablewidget->setItem(0, 1, item2);
tablewidget->setItem(0, 2, item3);
dock3->setWidget(tablewidget);
//在底部位置
addDockWidget(Qt::BottomDockWidgetArea,dock3);
//设置窗口的状态
dock1->setFeatures();
QDockWidget::DockWidgetClosable //停靠窗可关闭
QDockWidget::DockWidgetMovable //停靠窗可移动
QDockWidget::DockWidgetFloatable //停靠窗可浮动
QDockWidget::DockWidgetVerticalTitleBar //标题栏垂直放置
QDockWidget::AllDockWidgetFeatures //可关闭、可移动、可浮动
QDockWidget::NoDockWidgetFeatures //不可关闭、不可移动、不可浮动
//设置窗口被允许放位置
dock1->setAllowedAreas();
Qt::LeftDockWidgetArea //左边
Qt::RightDockWidgetArea //右边
Qt::TopDockWidgetArea //顶部
Qt::BottomDockWidgetArea //底部
Qt::AllDockWidgetAreas //所有的可放置位置
Qt::NoDockWidgetArea //无放置位置
运行结果:
参考博客:
https://blog.csdn.net/rl529014/article/details/51530565