touchpad + QToolButton = supperios press

时间:2017-12-12 02:37:08

标签: c++ linux qt qt4 x11

我有QToolButton

btn_ = new QToolButton(this);
btn_->setFocusPolicy(Qt::NoFocus);
btn_->setAutoRepeat(false);
connect(btn_, SIGNAL(pressed()), this, SLOT(btnPressed()));

我的插槽每次按appreciable按下触摸板两次。

在我的程序调试期间,我可以看到来自QAbstractButton::mousePressEvent的第一个来电 第二个QAbstractButton::mouseMoveEvent

如果我瞬间按下触控板然后从中移开手 触摸板,然后我只从btnPressed拨打了QAbstractButton::mousePressEvent

知道如何解决这个问题吗?所以我没有从笔记本的触摸板上移开手 按下。我想计时器来衡量从btnPressed到另一个{{1}}的时间, 但不知道超时的值来防止这种情况。我当然可以为我的笔记本选择超时,但如果在另一台笔记本上它会太小, 或者如果选择大的,那么用户就开始抱怨不负责任的界面。

的linux / X11 / qt4.8 / AMD64

1 个答案:

答案 0 :(得分:1)

尝试使用clicked()代替pressed(),因为它反映了用户按下单击按钮所期望的行为。一般情况下,如果你不确定你真的希望在按下按钮时立即调用插槽(并处理可能带来的特殊情况),你应该使用clicked()