欢迎小伙伴的点评✨✨,相互学习、互关必回、全天在线🍳🍳🍳
博主🧑🧑 本着开源的精神交流Qt开发的经验、将持续更新续章,为社区贡献博主自身的开源精神👩🚀
文章目录
前言
本章节将会给大家带来停靠窗口(QDock Widget)的详细使用方法
一、停靠窗口 QDockWidget类
1.1、设置停靠窗口的一般流程如下:
(1)创建一个 QDockWidget 对象的停靠窗体 。
(2)设置此停靠窗体的属性,通常调用 setF eaturesO及 setAllowedAreas()两种方法。
(3)新建一个要插入停靠窗体的控件,常用的有 QListWidget 和 QTextEdit 、【也可以加载自己封装的类】。
(4)将控件插入停靠窗体,调用 QDockWidget 的 setWidget()方法 。
(5)使用 addDockWidget()方法在 MainWindow 中加入此停靠窗体 。
1.2、停靠窗口 QDockWidget 类的使用:
- 窗口 1 只可在主窗口的左边和右边停靠;
- 窗口 2 只可在浮动和右部停靠两种状态间切换,并且不可移动;
- 窗口 3 可实现停靠
- 窗口的各种状态。效果如图一所示。
图一
二、实例原码详解
2.1、mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTextEdit>
#include <QDockWidget>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
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) ; //(a)
dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);//(b)
QTextEdit *tel=new QTextEdit();
tel->setText(tr("Windowl,The dock widget can be moved between docks by the user" ""));
dock->setWidget(tel);
addDockWidget(Qt::RightDockWidgetArea,dock);
//停靠窗口2
dock = new QDockWidget(tr("DockWindow2"),this);
dock->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable); //可关闭、可浮动
QTextEdit *te2 = new QTextEdit();
te2->setText(tr("Windows2,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("DockWidget3"),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()
{
delete ui;
}
其中,
(a) setFeatures() 方法设置停靠窗体的特性,原型如下:
void setFeatures(DockWidgetFeatures features)
参数 QDockWidget::DockWidgetFeatures 指定停靠窗体的特性,包括以下几种参数。
- QDockWidget::DockWidgetClosable: 停靠窗体可关闭。
- DockWidget::DockWidgetMovable: 停靠窗体可移动。
- QDockWidget::DockWidgetFloatable: 停靠窗体可浮动。
- QDockWidget: :AllDockWidgetFeatures: 此参数表示拥有停靠窗体的所有特性。
- QDockWidget: :NoDockWidgetFeatures: 不可移动、不可关闭、不可浮动。
- 此参数可采用或(I)的方式对停靠窗体进行特性的设定。
(b) setAllowedAreas()方法设置停靠窗体可停靠的区域,原型如下:
- Qt::LeftDockWidgetArea: 可在主窗口的左侧停靠。
- Qt::RightDockWidgetArea: 可在主窗口的右侧停靠。
- Qt::TopDockWidgetArea: 可在主窗口的顶部停靠。
- Qt::BottomDockWidgetArea: 可在主窗口的底部停靠。
- Qt::AllDockWidgetArea: 可在主窗口任意(以上四个)部位停靠。
- Qt::NoDockWidgetArea: 只可停靠在插入处。
- 各区域设定也可采用或(I)的方式进行。
总结
停靠窗口 QDockWidget 类也是在应用程序中经常用到的