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

时间:2011-02-26 00:47:51

标签: c++ qt event-loop qeventloop

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

有关如何更正确地执行此操作的任何建议吗?

2 个答案:

答案 0 :(得分:3)

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

  

使您的应用程序执行空闲   处理(即执行特殊处理)   只要没有待处理的功能   事件),使用QTimer与0超时。   更先进的空闲处理方案   可以使用processEvents()实现。

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

答案 1 :(得分:0)

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