【发布时间】:2015-04-20 14:48:03
【问题描述】:
是否有一个 Qt(我使用 Qt 4.7.1)小部件在按下时发出信号(不仅仅是第一次发出信号)并在用户释放鼠标时停止?像标准间隔中的 mousedown 事件? 还是我必须用 qtimer 来实现它? 谢谢
【问题讨论】:
标签: qt signals mouseevent
是否有一个 Qt(我使用 Qt 4.7.1)小部件在按下时发出信号(不仅仅是第一次发出信号)并在用户释放鼠标时停止?像标准间隔中的 mousedown 事件? 还是我必须用 qtimer 来实现它? 谢谢
【问题讨论】:
标签: qt signals mouseevent
查看QAbstractButton::autoRepeat 和 autoRepeatInterval。它应该正是您所需要的,并且适用于所有按钮。
【讨论】:
在用户释放鼠标之前,您必须实现一些触发事件的方法。
我建议您创建一个连接到按钮事件的处理程序类,该事件会根据您的观察者触发自定义事件。
【讨论】:
据我所知,没有这样的按钮小部件。QPushButton 的autoRepeat 应该可以满足您的需求。但是QPushButton::pressed() 和QPushButton::released() 信号不足以满足您的需求吗?
无论如何,您所描述的内容很容易实现(并且是多余的,因为它已经存在),将QTimer::timeout() 信号连接到您想要的信号,然后在pressed() 信号上启动计时器并停止它在released() 信号上:)
编辑:正如 cmets 中所指出的,有一个内置解决方案,即设置从 QAbstractButton 继承的属性 autoRepeat 到 true。
您可以通过调整autoRepeatDelay和autoRepeatInterval来自定义初始延迟和间隔。
【讨论】: