如何增加 Qt 中 QPushButton 的可点击区域?

Fri*_*itz 1 qt touch qpushbutton

我的触摸用户界面左上角的后退按钮在电阻式触摸屏上有点难以按下,因为屏幕边缘的触摸事件不是那么精确。

按钮的视觉尺寸不能真正增加,因为其他东西需要屏幕空间。因此,我只想增加按钮的可点击区域。因此,当用户触摸屏幕左上角的某处(如红色标记)时,应按下后退按钮。请注意,红色区域也与另一个按钮重叠。理想情况下,可视按钮状态也会更改为“按下”状态。

示例布局

谁能给我一些正确方向的指示?我已经考虑了以下事项,但我不确定哪些会起作用。

  • 用一个更大的、不可见的按钮覆盖实际的按钮,用透明画笔绘制。但是我不知道如何在用户按下隐形按钮时将较小的按钮绘制为“按下”。
  • 创建一个基于 的新类QWidget,它具有红色区域的大小(具有不可见背景)并包含实际按钮。然后将触摸事件传递给按钮,以便在用户触摸空白区域时按下按钮。
  • 子类化QPushButton和重新实现QAbstractButton::hitButton以接受按钮区域之外的点。但我想当我触摸小部件区域之外时,甚至可能不会调用该函数。

svl*_*sov 5

要在布局内占据更多垂直空间,请将按钮垂直策略设置为扩展。

要在不增加视觉尺寸的情况下增加可点击区域,请增加边距。

要让后退按钮与其他按钮重叠,请不要将其放在布局中。而是直接设置其父项并将其移动到角落。

backButton = new QPushButton("< Back", mainWindow);
backButton->setStyleSheet("margin: 30;");
backButton->show();
backButton->resize(150, 90);
backButton->move(-30, -30);
Run Code Online (Sandbox Code Playgroud)