gpt4 book ai didi

c++ - QT中鼠标事件是如何传递给widget的

转载 作者:行者123 更新时间:2023-11-30 05:09:28 25 4
gpt4 key购买 nike

考虑这种情况:

对于小部件上的按钮:如果在通过显式调用 隐藏()

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

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

最佳答案

不,同步的主线程尊重 GUI 操作,所以你不能在用户点击的同时改变主线程中对象的可见性(比如你的 QPushButton)在上面。此外,除非您使用的是具有不同事件循环的多线程应用程序,否则您的 QTimer 也将在主线程中处理,因此它是同步的 UI。简而言之:您可能会得到毫秒级的同步(在隐藏它之前立即单击),但不是真正的并行性。

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

关于c++ - QT中鼠标事件是如何传递给widget的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46150493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com