QDockWidget
目录
- 前言
- 介绍
- 常用方法
- 构造函数
- 公有函数
- 信号函数
前言
最近好久没写博客了,markdown的语法都有些生疏了,现在正好有时间,就继续写起来吧。
最近面试,发现了一个悲催的点,好多基础知识都慢慢遗忘了;忙忙碌碌的经历了将近三年的工作,好像总是在追赶,早上弄到晚上,不过却忽略了一个问题,每天都在忙什么?是找一些近似需求的实现,改一改就成了?之前貌似就是这样,嘻嘻哈哈的度过了这些天。
讲真,最近发生的事情有点集中,还有些小难受,慢慢调整,慢慢学习,查漏补缺吧。
介绍
QDockWidget实现了可停靠的窗口,这一个窗口部件在Qt Creator、VS Code等各种编辑器的工具栏、侧边栏都有应用。其还支持嵌套,可以创建多级的停靠窗口布局,进一步增强用户界面的灵活性和可定制性。
在QMainWindow中,QDockWidget可以作为辅助窗口停靠在主窗口内部的顶部、底部、左侧或右侧,也可以作为独立的浮动窗口出现在主窗口之外;其提供了灵活的布局管理和标题栏定制,允许用户根据需要调整各个窗口的位置、大小,对窗口显示或隐藏。
常用方法
构造函数
常用的形式如下:
- 创建一个带有标题的QDockWidget对象。
QDockWidget(const QString &title, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags());
其中:title指定了QDockWidget的标题栏显示的文本;Parent指定了QDockWidget的父部件,通常是QMainWindow。
用法例如:
QDockWidget *dockwidget = new QDockWidget(tr("DockWidget"), this);
- 创建一个没有标题的QDockWidget对象
QDockWidget(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags());
公有函数
- 设置停靠窗口中的部件
setWidget(QWidget *widget)
- 设置QDockWidget可以停靠的区域
setAllowedAreas(Qt::DockWidgetAreas areas)
Qt::DockWidgetAreas是一个枚举类型,包括:
常量 | 描述 |
---|---|
Qt::LeftDockWidgetArea | 左侧 |
Qt::RightDockWidgetArea | 右侧 |
Qt::TopDockWidgetArea | 顶部 |
Qt::BottomDockWidgetArea | 底部 |
可以使用他们的组合,例如:允许在右侧和底部停靠
dockWidget->setAllowedAreas(Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea);
- 设置停靠窗口的功能特性,如关闭按钮、可浮动等
setFeatures(QDockWidget::DockWidgetFeatures features)
QDockWidget::DockWidgetFeatures是一个枚举类型,包括:
常量 | 描述 |
---|---|
QDockWidget::DockWidgetClosable | 可关闭 |
QDockWidget::DockWidgetMovable | 可移动 |
QDockWidget::DockWidgetFloatable | 可漂浮 |
QDockWidget::DockWidgetVerticalTitleBar | 在左边显示垂直的标签栏 |
QDockWidget::AllDockWidgetFeatures | 具有1,2,3的所有功能 |
QDockWidget::NoDockWidgetFeatures | 无法关闭,不能移动,不能漂浮 |
- 设置停靠窗口的标题
setWindowTitle(const QString &title)
- 设置停靠窗口的可见性
setVisible(bool visible)
- 检查QDockWidget是否被浮动(未停靠)
isFloating() const
- 返回QDockWidget的子部件
widget() const
- 返回QDockWidget的标题栏部件
titleBarWidget() const
- 返回可用于切换QDockWidget可见性的QAction对象
toggleViewAction() const
信号函数
- 当allowedAreas属性更改时发出
void allowedAreasChanged(Qt::DockWidgetAreas allowedAreas)
- 当停靠位置发生变化时发出
void dockLocationChanged(Qt::DockWidgetArea area)
- 当features属性更改时发出
void featuresChanged(QDockWidget::DockWidgetFeatures features)
- 当浮动状态发生变化时发出
void topLevelChanged(bool topLevel)
- 当停靠窗口的可见性发生变化时发出
void visibilityChanged(bool visible)
先写到这里了,后期实践之后再接着补充