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

时间:2015-03-27 19:19:45

标签: qt touch qpushbutton

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

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

Example layout

任何人都可以给我一些正确方向的指示吗?我考虑过以下事项,但我不确定哪种方法可行。

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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