Visindigo::Widgets::TitleWidget Class
class Visindigo::Widgets::TitleWidget提供一个自定义标题栏控件,可以用于无边框窗口的标题栏显示和操作. 详情...
| 头文件: | #include <Widgets/TitleWidget.h> |
| 自以下版本: | Visindigo 0.13.0 |
公开类型
| flags | ButtonStyleFeature |
(自 Visindigo 0.13.0 引入) enum | ButtonStyleFlag { SignButton, RoundButton, ButtonLeft, ButtonRight, Win32Style, MacOSStyle } |
| flags | TitleButtonFeature |
(自 Visindigo 0.13.0 引入) enum | TitleButtonFlag { Minimumize, Maximize, Close, NotMinimumize, All } |
公开成员函数
(自 Visindigo 0.13.0 引入) | TitleWidget(QWidget *parent = nullptr, QWidget *topWidget = nullptr, bool autoSetupTopWidget = true, bool enableDragMove = true) |
(自 Visindigo 0.13.0 引入) virtual | ~TitleWidget() |
(自 Visindigo 0.13.0 引入) Visindigo::Widgets::TitleWidget::ButtonStyleFeature | getButtonStyle() const |
(自 Visindigo 0.13.0 引入) QWidget * | getInsertWidget() const |
(自 Visindigo 0.13.0 引入) QString | getPixmapPath() const |
(自 Visindigo 0.13.0 引入) Qt::Alignment | getTitleAlignment() const |
(自 Visindigo 0.13.0 引入) Visindigo::Widgets::TitleWidget::TitleButtonFeature | getTitleButtonFeature() const |
(自 Visindigo 0.13.0 引入) QString | getTitleText() const |
(自 Visindigo 0.13.0 引入) QWidget * | getTopWidget() const |
(自 Visindigo 0.13.0 引入) bool | isDragMoveEnable() const |
(自 Visindigo 0.13.0 引入) void | setButtonStyle(Visindigo::Widgets::TitleWidget::ButtonStyleFeature style) |
(自 Visindigo 0.13.0 引入) void | setDragMoveEnable(bool enable) |
(自 Visindigo 0.13.0 引入) void | setInsertWidget(QWidget *widget) |
(自 Visindigo 0.13.0 引入) void | setPixmapPath(const QString &filePath) |
(自 Visindigo 0.13.0 引入) void | setSignColor(const QColor &color) |
(自 Visindigo 0.13.0 引入) void | setTitleAlignment(Qt::Alignment alignment) |
(自 Visindigo 0.13.0 引入) void | setTitleButtonFeature(Visindigo::Widgets::TitleWidget::TitleButtonFeature feature) |
(自 Visindigo 0.13.0 引入) void | setTitleText(const QString &text) |
(自 Visindigo 0.13.0 引入) void | setTopWidget(QWidget *topWidget) |
(自 Visindigo 0.13.0 引入) void | setupTopWidget() |
详细说明
TitleWidget 类继承自 QFrame,提供了一个可定制的标题栏控件。它允许用户设置标题文本、图标、按钮样式等属性, 并支持拖动窗口移动等功能。该控件适用于需要自定义窗口外观的应用程序,特别是无边框窗口。
这个类主要在内部依赖事件过滤器实现功能,因此使用时只需要正确使用构造函数就可以自动完成对父控件的劫持, 不需要额外手动设置。
这个类当然也支持你正常使用平台本身的窗口,只需要在构造时将后两个布尔量都设置为 false 即可。
使用无边框窗口时会遇到一个Qt的已知问题,即在无边框窗口最大化后,不能正常恢复到原始大小。 此类用了一个很蠢的方法来解决这个问题:在恢复大小时,先取消无边框状态,恢复大小后再重新设置无边框状态。 这会导致窗口在恢复大小时会有一瞬间的边框闪现以及消失,但这是目前唯一简单有效的解决方法。
这个类允许你通过枚举值 TitleWidget::TitleButtonFlag 和 TitleWidget::ButtonStyleFlag 来定制标题栏按钮的功能和位置。 基本上就是选择显示哪些按钮,使用符号化风格还是圆点风格(类似MacOS),以及按钮是放在标题栏的左侧还是右侧。
此外,它还允许你在其中插入自定义的 QWidget 作为标题栏的一部分,从而实现更复杂的布局需求。这在 现代应用程序中很常见,例如在标题栏中添加搜索框、菜单按钮等。
成员类型文档
[since Visindigo 0.13.0] enum TitleWidget::ButtonStyleFlag
flags TitleWidget::ButtonStyleFeature
| Constant | Value | Description |
|---|---|---|
Visindigo::Widgets::TitleWidget::SignButton | 0x01 | 指定使用符号化风格的按钮(类似Windows风格)。 |
Visindigo::Widgets::TitleWidget::RoundButton | 0x02 | 指定使用圆点风格的按钮(类似MacOS风格)。 |
Visindigo::Widgets::TitleWidget::ButtonLeft | 0x04 | 指定将按钮放置在标题栏的左侧。 |
Visindigo::Widgets::TitleWidget::ButtonRight | 0x08 | 指定将按钮放置在标题栏的右侧。 |
Visindigo::Widgets::TitleWidget::Win32Style | SignButton | ButtonRight | 指定使用符号化风格的按钮并将其放置在右侧。 |
Visindigo::Widgets::TitleWidget::MacOSStyle | RoundButton | ButtonLeft | 指定使用圆点风格的按钮并将其放置在左侧。 |
这个enum 从 Visindigo 0.13.0 开始支持。
ButtonStyleFeature 类型是 QFlags<ButtonStyleFlag> 的一个类型别名。它存储了多个 ButtonStyleFlag 值的OR组合,可供安全计算。
[since Visindigo 0.13.0] enum TitleWidget::TitleButtonFlag
flags TitleWidget::TitleButtonFeature
| Constant | Value | Description |
|---|---|---|
Visindigo::Widgets::TitleWidget::Minimumize | 0x01 | 指定显示最小化按钮。 |
Visindigo::Widgets::TitleWidget::Maximize | 0x02 | 指定显示最大化/还原按钮。 |
Visindigo::Widgets::TitleWidget::Close | 0x04 | 指定显示关闭按钮。 |
Visindigo::Widgets::TitleWidget::NotMinimumize | Minimumize | Close | 指定不显示最小化按钮。 |
Visindigo::Widgets::TitleWidget::All | Minimumize | Maximize | Close | 指定显示所有按钮(最小化、最大化/还原、关闭)。 |
这个enum 从 Visindigo 0.13.0 开始支持。
TitleButtonFeature 类型是 QFlags<TitleButtonFlag> 的一个类型别名。它存储了多个 TitleButtonFlag 值的OR组合,可供安全计算。
成员函数文档
[since Visindigo 0.13.0] TitleWidget::TitleWidget(QWidget *parent = nullptr, QWidget *topWidget = nullptr, bool autoSetupTopWidget = true, bool enableDragMove = true)
parent 指定 TitleWidget 的父控件。如果提供了该参数且 topWidget 为空, 则 TitleWidget 会自动将父控件作为其管理的顶层窗口。 topWidget 指定 TitleWidget 所管理的顶层窗口。如果提供了该参数, 则 TitleWidget 会将其作为顶层窗口进行管理。 autoSetupTopWidget 指定是否自动将 parent 或 topWidget 设置为无边框窗口。 enableDragMove 指定是否启用通过拖动标题栏移动窗口的功能。
TitleWidget 构造函数。
这个function 从 Visindigo 0.13.0 开始支持。
[virtual noexcept, since Visindigo 0.13.0] TitleWidget::~TitleWidget()
TitleWidget 析构函数。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] Visindigo::Widgets::TitleWidget::ButtonStyleFeature TitleWidget::getButtonStyle() const
return 当前标题栏按钮的样式。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] QWidget *TitleWidget::getInsertWidget() const
return 当前的插入控件。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] QString TitleWidget::getPixmapPath() const
return 当前标题图标的文件路径。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] Qt::Alignment TitleWidget::getTitleAlignment() const
return 当前标题文本的对齐方式。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] Visindigo::Widgets::TitleWidget::TitleButtonFeature TitleWidget::getTitleButtonFeature() const
return 当前标题栏按钮的功能。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] QString TitleWidget::getTitleText() const
return 当前的标题文本。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] QWidget *TitleWidget::getTopWidget() const
return TitleWidget 所管理的顶层窗口。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] bool TitleWidget::isDragMoveEnable() const
return 是否启用通过拖动标题栏移动窗口的功能。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void TitleWidget::setButtonStyle(Visindigo::Widgets::TitleWidget::ButtonStyleFeature style)
设置标题栏按钮的样式为 style 。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void TitleWidget::setDragMoveEnable(bool enable)
设置是否启用通过拖动标题栏移动窗口的功能为 enable 。
这个function 从 Visindigo 0.13.0 开始支持。
另请参阅 isDragMoveEnable().
[since Visindigo 0.13.0] void TitleWidget::setInsertWidget(QWidget *widget)
设置插入控件为 widget 。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void TitleWidget::setPixmapPath(const QString &filePath)
设置标题图标的文件路径为 filePath 。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void TitleWidget::setSignColor(const QColor &color)
color 要设置的颜色。
设置符号模式下按钮的符号颜色
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void TitleWidget::setTitleAlignment(Qt::Alignment alignment)
设置标题文本的对齐方式为 alignment 。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void TitleWidget::setTitleButtonFeature(Visindigo::Widgets::TitleWidget::TitleButtonFeature feature)
设置标题栏按钮的功能为 feature 。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void TitleWidget::setTitleText(const QString &text)
设置标题文本为 text 。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void TitleWidget::setTopWidget(QWidget *topWidget)
设置 TitleWidget 所管理的顶层窗口为 topWidget 。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void TitleWidget::setupTopWidget()
设置 TitleWidget 所管理的顶层窗口为无边框窗口。
这个function 从 Visindigo 0.13.0 开始支持。