Yayin Story Studio logo Yayin Story Studio 项目文档
回到主页 用户手册

Visindigo::Widgets::WidgetResizeTool Class

class Visindigo::Widgets::WidgetResizeTool

WidgetResizeTool提供了一个为任意QWidget通过拖动边框调整大小的工具. 详情...

头文件: #include <WidgetResizeTool>
自以下版本: Visindigo 0.13.0

公开类型

enum Border { Left, Top, Right, Bottom, LeftTop, …, RB }
flags Borders

公开成员函数

(自 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

ConstantValueDescription
Visindigo::Widgets::WidgetResizeTool::Left0x01可调整左边框
Visindigo::Widgets::WidgetResizeTool::Top0x02可调整上边框
Visindigo::Widgets::WidgetResizeTool::Right0x04可调整右边框
Visindigo::Widgets::WidgetResizeTool::Bottom0x08可调整下边框
Visindigo::Widgets::WidgetResizeTool::LeftTop0x10可调整左上角
Visindigo::Widgets::WidgetResizeTool::RightTop0x20可调整右上角
Visindigo::Widgets::WidgetResizeTool::LeftBottom0x40可调整左下角
Visindigo::Widgets::WidgetResizeTool::RightBottom0x80可调整右下角
Visindigo::Widgets::WidgetResizeTool::AllBorderLeft | Top | Right | Bottom可调整所有边框
Visindigo::Widgets::WidgetResizeTool::AllCornerLeftTop | RightTop | LeftBottom | RightBottom可调整所有角落
Visindigo::Widgets::WidgetResizeTool::AllAllBorder | AllCorner可调整所有边框和角落
Visindigo::Widgets::WidgetResizeTool::RBRight | 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 安装该工具的父级QWidgetborders 指定哪些边框可以调整大小,默认是全部边框。 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 开始支持。