Visindigo::Widgets::WidgetResizeTool Class
class Visindigo::Widgets::WidgetResizeToolWidgetResizeTool提供了一个为任意QWidget通过拖动边框调整大小的工具. 详情...
| 头文件: | #include <WidgetResizeTool> |
| 自以下版本: | Visindigo 0.13.0 |
公开类型
公开成员函数
(自 Visindigo 0.13.0 引入) | WidgetResizeTool(QWidget *parent, Visindigo::Widgets::WidgetResizeTool::Borders borders = All, int borderWidth = 5, QWidget *topParent = nullptr) |
(自 Visindigo 0.13.0 引入) | ~WidgetResizeTool() |
(自 Visindigo 0.13.0 引入) virtual bool | eventFilter(QObject *target, QEvent *event) override |
(自 Visindigo 0.13.0 引入) void | setEnableBorder(Visindigo::Widgets::WidgetResizeTool::Borders borders) |
详细说明
WidgetResizeTool可以安装在任何QWidget上,使其能够通过拖动边框来调整大小。 用户可以指定哪些边框可以调整大小,以及边框的宽度。该工具会自动检测鼠标位置, 并在鼠标悬停在可调整大小的边框区域时显示相应的调整大小光标。当用户按下鼠标左键并拖动时, 工具会根据鼠标移动的距离调整窗口的大小。
Warning: 由于Qt的事件传播机制,这个类有已知缺陷,不能正确处理鼠标图标 以及部分情况下的调整行为。建议不要用这个类,它可能在未来的版本中被移除。
成员类型文档
enum WidgetResizeTool::Border
flags WidgetResizeTool::Borders
| Constant | Value | Description |
|---|---|---|
Visindigo::Widgets::WidgetResizeTool::Left | 0x01 | 可调整左边框 |
Visindigo::Widgets::WidgetResizeTool::Top | 0x02 | 可调整上边框 |
Visindigo::Widgets::WidgetResizeTool::Right | 0x04 | 可调整右边框 |
Visindigo::Widgets::WidgetResizeTool::Bottom | 0x08 | 可调整下边框 |
Visindigo::Widgets::WidgetResizeTool::LeftTop | 0x10 | 可调整左上角 |
Visindigo::Widgets::WidgetResizeTool::RightTop | 0x20 | 可调整右上角 |
Visindigo::Widgets::WidgetResizeTool::LeftBottom | 0x40 | 可调整左下角 |
Visindigo::Widgets::WidgetResizeTool::RightBottom | 0x80 | 可调整右下角 |
Visindigo::Widgets::WidgetResizeTool::AllBorder | Left | Top | Right | Bottom | 可调整所有边框 |
Visindigo::Widgets::WidgetResizeTool::AllCorner | LeftTop | RightTop | LeftBottom | RightBottom | 可调整所有角落 |
Visindigo::Widgets::WidgetResizeTool::All | AllBorder | AllCorner | 可调整所有边框和角落 |
Visindigo::Widgets::WidgetResizeTool::RB | Right | Bottom | RightBottom | 可调整右边框、下边框和右下角 |
Borders 类型是 QFlags<Border> 的一个类型别名。它存储了多个 Border 值的OR组合,可供安全计算。
成员函数文档
[since Visindigo 0.13.0] WidgetResizeTool::WidgetResizeTool(QWidget *parent, Visindigo::Widgets::WidgetResizeTool::Borders borders = All, int borderWidth = 5, QWidget *topParent = nullptr)
parent 安装该工具的父级QWidget。 borders 指定哪些边框可以调整大小,默认是全部边框。 borderWidth 指定边框的宽度,默认是5像素。 topParent 指定事件过滤器安装的顶级父级QWidget,默认为parent。
构造函数 正确设置topParent有助于扩大鼠标跟踪范围,避免在调整窗口大小时鼠标离开边框区域导致调整中断。 建议将topParent设置为窗口的顶级父级QWidget。如果不设置,则与parent相同。
这个function 从 Visindigo 0.13.0 开始支持。
[noexcept, since Visindigo 0.13.0] WidgetResizeTool::~WidgetResizeTool()
析构函数
这个function 从 Visindigo 0.13.0 开始支持。
[override virtual, since Visindigo 0.13.0] bool WidgetResizeTool::eventFilter(QObject *target, QEvent *event)
target 事件过滤器的目标对象。 event 事件对象。
该函数会过滤安装了该工具的顶级父级QWidget的鼠标移动事件,以检测鼠标是否悬停在可调整大小的边框区域,并显示相应的调整大小光标。 当用户按下鼠标左键并拖动时,该函数会根据鼠标移动的距离调整窗口的大小。
return 如果事件被处理了,返回true;否则返回false。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void WidgetResizeTool::setEnableBorder(Visindigo::Widgets::WidgetResizeTool::Borders borders)
设置哪些边框可以调整大小。 borders 指定哪些边框可以调整大小,可以是Left、Right、Top、Bottom以及它们的组合。
这个function 从 Visindigo 0.13.0 开始支持。