如何在使用 QAbstractButton::autoRepeat 时区分按下、释放和长按

How to distinguish between pressed, released and long press when using QAbstractButton::autoRepeat

本文关键字:释放 autoRepeat QAbstractButton 时区      更新时间:2023-10-16

我在Linux上使用带有X11的Qt 4.8.X和/或Qt-QWS以及源自QAbstractButton的自定义按钮。现在我必须区分按钮按下、释放和用户按住按钮。为此,我想使用QAbstractButton::autoRepeat,如本问题中所述。正如 QT 文档所述

如果启用了自动重复,则会定期发出按下()、释放()和单击()信号。

那么,当所有三个信号一起发射时,我现在如何区分实际按下、按住和释放按钮?非常欢迎您的想法。谢谢和问候。

也许使用autoRepeat不是最好的主意。我不知道你到底想做什么,但我的第一个猜测是关闭自动重复。如果用户按下按钮,您将获得按下的信号。在该回调中,您可以启动一个计时器,该计时器以所需的"自动重复"间隔触发。如果用户再次释放按钮(信号释放),您只需停止或终止计时器。