如何在QT中将鼠标事件传递给小部件

时间:2017-09-11 07:37:39

标签: c++ qt

考虑这种情况:

对于窗口小部件上的按钮:如果在窗口小部件(包含按钮)被显式调用clicked()后隐藏了按钮hide()插槽的可能性?

例如,假设有一个计时器,并在其timeout()槽中调用widget.hide()。巧合的是,用户只是在时间到来的同时点击按钮。

问题是:在计时器的clicked()插槽(隐藏包含按钮的小部件)后,是否有可能调用按钮的timeout()插槽?

1 个答案:

答案 0 :(得分:1)

不,同步中的主线程涉及GUI操作,因此您无法在用户点击它的同时更改生活在主线程中的对象(如QPushButton)的可见性。此外,除非您使用具有不同事件循环的多线程应用程序,否则您的QTimer也将在主线程中处理,因此它与UI同步。简而言之:您可能会得到毫秒并发(在隐藏它之前立即单击),但不是实际的并行性。

如果您关心这一点,也许您可​​以在实际处理点击之前设置一个小延迟,只是检查按钮是否被点击但是立即隐藏。在这种情况下,您可以忽略用户输入,但这会让人感到困惑。另一种选择是在点击按钮时延迟隐藏按钮,这样用户就不会得到错误的视觉反馈。