1、概述
QDockWidget是Qt框架中的一个窗口部件,它提供了一个可停靠的面板,该面板可用于显示和编辑各种内容。QDockWidget可以在主窗口中创建并停靠在不同的位置,如左侧、右侧、顶部或底部。此外,QDockWidget还具备浮动功能,可以通过拖动和放置的方式来改变其位置和大小,甚至将其拖动到主窗口之外,使其成为一个独立的浮动窗口。QDockWidget还可以嵌套在另一个QDockWidget内部,创建一个多级的停靠窗口布局。
2、重要方法
- QDockWidget():构造函数,用于创建一个QDockWidget对象。可以指定窗口的标题、父部件和窗口标识符等参数。
- setAllowedAreas():设置QDockWidget可以停靠的区域。可以指定一个或多个停靠区域,如左侧、右侧、顶部或底部等。
- setFeatures():设置QDockWidget的功能标志。可以指定停靠窗体是否可关闭、可移动、可浮动等特性。
- setFloating():设置QDockWidget是否被浮动(未停靠)。如果设置为true,则QDockWidget将成为一个浮动窗口。
- setWidget():将给定的QWidget对象设置为QDockWidget的子部件。这个子部件将显示在QDockWidget的内容区域中。
- toggleViewAction():返回一个QAction对象,该对象可用于切换QDockWidget的可见性。将这个QAction对象添加到菜单或工具栏中,用户就可以通过点击来显示或隐藏QDockWidget。
3、重要信号
- allowedAreasChanged:当QDockWidget的允许停靠区域发生变化时发出。
- featuresChanged:当QDockWidget的功能标志发生变化时发出。
- topLevelChanged:当QDockWidget的浮动状态发生变化时发出(即从停靠状态变为浮动状态,或从浮动状态变为停靠状态)。
- dockLocationChanged:当QDockWidget的停靠位置因手工拖拽或代码执行导致停靠位置发生变化时发出。
- visibilityChanged:当QDockWidget的可见状态发生变化时发出,包括显示或隐藏窗口。
4、常用枚举类型
- DockWidgetFeatures:这是一个枚举类型,用于指定QDockWidget的功能标志。常用的标志包括DockWidgetClosable(可关闭)、DockWidgetMovable(可移动)、DockWidgetFloatable(可浮动)等。可以使用“|”运算符将这些标志组合起来,以赋予QDockWidget多个特性。
#include <QApplication>
#include <QMainWindow>
#include <QDockWidget>
#include <QTextEdit>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QMainWindow mainWindow;
mainWindow.setWindowTitle("QDockWidget Example");
// 创建一个QTextEdit作为主窗口的中央部件
QTextEdit *centralWidget = new QTextEdit(&mainWindow);
centralWidget->setText("Central Widget");
mainWindow.setCentralWidget(centralWidget);
// 创建一个QDockWidget并设置其属性
QDockWidget *dockWidget = new QDockWidget("Dockable", &mainWindow);
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
dockWidget->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
// 创建一个QTextEdit作为QDockWidget的内容部件
QTextEdit *dockWidgetContent = new QTextEdit(dockWidget);
dockWidgetContent->setText("Dock Widget Content");
dockWidget->setWidget(dockWidgetContent);
// 将QDockWidget添加到主窗口中
mainWindow.addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
mainWindow.show();
return app.exec();
}
技术交流qq群:
觉得有帮助的话,打赏一下呗。。
需要商务合作(定制程序)的欢迎私信!!