在每个应用程序的事件循环迭代上执行槽

发布于 2024-10-19 10:36:15 字数 123 浏览 7 评论 0原文

如何在应用程序事件循环的每次迭代中调用我的槽? 我知道的唯一方法是使用 QTimer,并且在每次超时(每毫秒)信号时我可以调用我的插槽。 但我不喜欢这个选项,它看起来像是解决方法。

有什么建议如何更正确地做到这一点?

How can I call my slot on every iteration of application's event loop?
Only way I know is to use QTimer and on every timeout (every millisecond) signal I can call my slot.
But I don't like this option, it looks like workaround.

Any suggestions how to do this more correctly?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半寸时光 2024-10-26 10:36:15

来自 Qt 4.7 QCoreApplication::exec() 文档:

使您的应用程序执行空闲状态
处理(即执行特殊的
只要没有挂起的任务就可以运行
事件),使用超时时间为 0 的 QTimer。
更先进的闲置处理方案
可以使用processEvents()来实现。

所以你的方法就是规定的。查看 QCoreApplication::processEvents() 以获取对事件循环的更多控制。

From the Qt 4.7 QCoreApplication::exec() documentation:

To make your application perform idle
processing (i.e. executing a special
function whenever there are no pending
events), use a QTimer with 0 timeout.
More advanced idle processing schemes
can be achieved using processEvents().

So your approach is what is prescribed. Look at QCoreApplication::processEvents() for more control over the event loop.

梦途 2024-10-26 10:36:15

您还可以查看在 QCoreApplication::instance() 对象上使用 installEventFilter 方法。这将允许您在应用程序中的所有小部件处理所有事件之前访问它们。

You could also take a look at using the installEventFilter method on QCoreApplication::instance() object. This would allow you access to ALL events before they were processed for all widgets in your application.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文