如何增加 Qt 中 QPushButton 的可点击区域?
How to increase the clickable area of a QPushButton in Qt?
我的触摸用户界面左上角的后退按钮在电阻式触摸屏上有点难按,因为触摸事件在边界处不太精确屏幕。
无法真正增加按钮的视觉尺寸,因为其他事情需要屏幕 space。因此,我只想增加按钮的可点击区域。因此,当用户触摸屏幕左上角的某处(红色标记处)时,应按下后退按钮。请注意,红色区域还与另一个按钮重叠。理想情况下,视觉按钮状态也会更改为 "pressed" 状态。
谁能给我一些正确方向的指示?我考虑了以下事项,但不确定哪个可行。
- 用一个更大的、不可见的按钮覆盖实际按钮,用透明画笔绘制。但是我不知道如何在用户按下不可见按钮时将较小的按钮绘制为 "pressed"。
- 基于
QWidget
创建一个新的 class,它具有红色区域的大小(背景不可见)并包含实际按钮。然后将触摸事件传递给按钮,以便在用户触摸空白区域时按下按钮。
- Subclassing
QPushButton
并重新实现 QAbstractButton::hitButton
以接受按钮区域外的点。但我想当我触摸小部件区域之外时,该函数可能甚至不会被调用。
要在布局中占据更多垂直空间 space,请将按钮垂直策略设置为展开。
要在不增加视觉尺寸的情况下增加可点击区域,请增加边距。
要使后退按钮与其他按钮重叠,请不要将其放入布局中。而是直接设置其父级并将其移动到角落。
backButton = new QPushButton("< Back", mainWindow);
backButton->setStyleSheet("margin: 30;");
backButton->show();
backButton->resize(150, 90);
backButton->move(-30, -30);
我的触摸用户界面左上角的后退按钮在电阻式触摸屏上有点难按,因为触摸事件在边界处不太精确屏幕。
无法真正增加按钮的视觉尺寸,因为其他事情需要屏幕 space。因此,我只想增加按钮的可点击区域。因此,当用户触摸屏幕左上角的某处(红色标记处)时,应按下后退按钮。请注意,红色区域还与另一个按钮重叠。理想情况下,视觉按钮状态也会更改为 "pressed" 状态。
谁能给我一些正确方向的指示?我考虑了以下事项,但不确定哪个可行。
- 用一个更大的、不可见的按钮覆盖实际按钮,用透明画笔绘制。但是我不知道如何在用户按下不可见按钮时将较小的按钮绘制为 "pressed"。
- 基于
QWidget
创建一个新的 class,它具有红色区域的大小(背景不可见)并包含实际按钮。然后将触摸事件传递给按钮,以便在用户触摸空白区域时按下按钮。 - Subclassing
QPushButton
并重新实现QAbstractButton::hitButton
以接受按钮区域外的点。但我想当我触摸小部件区域之外时,该函数可能甚至不会被调用。
要在布局中占据更多垂直空间 space,请将按钮垂直策略设置为展开。
要在不增加视觉尺寸的情况下增加可点击区域,请增加边距。
要使后退按钮与其他按钮重叠,请不要将其放入布局中。而是直接设置其父级并将其移动到角落。
backButton = new QPushButton("< Back", mainWindow);
backButton->setStyleSheet("margin: 30;");
backButton->show();
backButton->resize(150, 90);
backButton->move(-30, -30);