2011-02-26 56 views
3

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

任何建议如何更正确地做到这一点?

+1

你的QTimer可以有一个0的超时,它会在每个事件循环中运行一次,而不是每毫秒一次,这只会在每个事件循环中运行一次。 :-)尽管如此,还是有点解决方法。 – 2011-02-26 00:53:51

+0

是的,我知道这一点,我现在正在使用它,但它不是我想要的。 – asmodan 2011-02-26 11:22:36

回答

3

从Qt的4.7 QCoreApplication :: EXEC()文档:

为了使您的应用程序执行闲置 处理(即执行特殊的 功能,只要没有未决 事件),使用QTimer与0超时。 可以使用processEvents()来实现更高级的空闲处理方案 。

所以你的方法是规定的。查看QCoreApplication :: processEvents()以更好地控制事件循环。

0

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