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

如何在Qt中增加QPushButton的可点击区域?,qt,touch,qpushbutton,Qt,Touch,Qpushbutton,我的触摸屏用户界面左上角的“后退”按钮在电阻式触摸屏上有点难以按下,因为触摸事件在屏幕边界处并不精确 按钮的视觉尺寸实际上无法增加,因为屏幕空间需要用于其他事情。因此,我只想增加按钮的可点击区域。因此,当用户触摸屏幕左上角的某个位置时(如红色所示),应按下后退按钮。请注意,红色区域也与另一个按钮重叠。理想情况下,可视按钮状态也会变为“按下”状态 谁能给我指点一下正确的方向吗?我已经考虑过以下几点,但我不确定哪一点可行 用一个较大的、不可见的按钮覆盖实际按钮,并用透明笔刷绘制。但我不知道当用户

我的触摸屏用户界面左上角的“后退”按钮在电阻式触摸屏上有点难以按下,因为触摸事件在屏幕边界处并不精确

按钮的视觉尺寸实际上无法增加,因为屏幕空间需要用于其他事情。因此,我只想增加按钮的可点击区域。因此,当用户触摸屏幕左上角的某个位置时(如红色所示),应按下后退按钮。请注意,红色区域也与另一个按钮重叠。理想情况下,可视按钮状态也会变为“按下”状态

谁能给我指点一下正确的方向吗?我已经考虑过以下几点,但我不确定哪一点可行

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

要在版面中占据更多垂直空间,请将按钮垂直策略设置为“展开”

要增加可单击区域而不增加视觉大小,请增加边距

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

backButton = new QPushButton("< Back", mainWindow);
backButton->setStyleSheet("margin: 30;");
backButton->show();
backButton->resize(150, 90);
backButton->move(-30, -30);
backButton=新的QPushButton(setStyleSheet(“边距:30;”);
backButton->show();
后退按钮->调整大小(150,90);
后退按钮->移动(-30,-30);

要在版面中占据更多垂直空间,请将按钮垂直策略设置为“展开”

要增加可单击区域而不增加视觉大小,请增加边距

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

backButton = new QPushButton("< Back", mainWindow);
backButton->setStyleSheet("margin: 30;");
backButton->show();
backButton->resize(150, 90);
backButton->move(-30, -30);
backButton=新的QPushButton(setStyleSheet(“边距:30;”);
backButton->show();
后退按钮->调整大小(150,90);
后退按钮->移动(-30,-30);

Awesome,这是开箱即用的。真不敢相信这就像设置边距那么简单。顺便说一下,当你设置
边距底部:30;右边距:30
,您不需要在
move
中使用负偏移量,您可以单独指定X/Y大小。请记住相应地更改
的大小。@Fritz事实上这是真的,没有想到。太棒了,这是开箱即用的。真不敢相信这就像设置边距那么简单。顺便说一下,当你设置
边距底部:30;右边距:30
,您不需要在
move
中使用负偏移量,您可以单独指定X/Y大小。请记住相应地改变
的大小。@Fritz事实上这是真的,没有想到。