考虑这种情况:
对于窗口小部件上的按钮:如果在窗口小部件(包含按钮)被显式调用clicked()
后隐藏了按钮hide()
插槽的可能性?
例如,假设有一个计时器,并在其timeout()
槽中调用widget.hide()
。巧合的是,用户只是在时间到来的同时点击按钮。
问题是:在计时器的clicked()
插槽(隐藏包含按钮的小部件)后,是否有可能调用按钮的timeout()
插槽?
答案 0 :(得分:1)
不,同步中的主线程涉及GUI操作,因此您无法在用户点击它的同时更改生活在主线程中的对象(如QPushButton
)的可见性。此外,除非您使用具有不同事件循环的多线程应用程序,否则您的QTimer
也将在主线程中处理,因此它与UI同步。简而言之:您可能会得到毫秒并发(在隐藏它之前立即单击),但不是实际的并行性。
如果您关心这一点,也许您可以在实际处理点击之前设置一个小延迟,只是检查按钮是否被点击但是立即隐藏。在这种情况下,您可以忽略用户输入,但这会让人感到困惑。另一种选择是在点击按钮时延迟隐藏按钮,这样用户就不会得到错误的视觉反馈。