试图在线程中保持 qt 小部件的焦点
Posted
技术标签:
【中文标题】试图在线程中保持 qt 小部件的焦点【英文标题】:Trying to keep a qt widget in focus in a thread 【发布时间】:2022-01-12 18:11:33 【问题描述】:我有一个主线程,它拥有一个带有我想要重复更新的标签的小部件。在父线程中我可以循环一千次(测试运行)并且它工作正常。当我将小部件的实例传递到一个新线程并尝试在那里执行它时,它会更新一点然后停止。如果我将鼠标悬停在它上面,当我将鼠标移开时,它会很好地更新并再次停止。我假设鼠标正在强制小部件进入焦点和/或“活动窗口”状态,但是当我尝试调用任何一种方法来设置焦点或活动窗口状态时,它没有任何区别。也许它正在提高线程的优先级?
有没有一种方法可以确保每次更新小部件标签的调用都被看到,而无需将鼠标移到它上面?
【问题讨论】:
请提供minimal reproducible example。除了运行main
的线程之外,您不能直接从任何线程修改QWidget
——它不受支持。您可能应该改用排队信号/槽机制。
这能回答你的问题吗? Modify Qt GUI from background worker thread
【参考方案1】:
我找到了答案。连接信号和槽,以便在调用主线程上的槽的线程中发出信号,这将使用线程中设置的新值更新小部件。
【讨论】:
以上是关于试图在线程中保持 qt 小部件的焦点的主要内容,如果未能解决你的问题,请参考以下文章