【问题标题】:Can QTimer fire when the queue is not empty?QTimer 可以在队列不为空时触发吗?
【发布时间】:2019-06-02 05:22:14
【问题描述】:

如果QTimer-s和事件队列中的事件都过期了,QT调度器会做什么?触发计时器并运行连接到它们的函数,或处理事件?换句话说,当事件队列不为空时,定时器可以触发吗?

【问题讨论】:

    标签: qt qt5 qtimer


    【解决方案1】:

    QTimer 触发一个事件。见:

    https://doc.qt.io/qt-5/qobject.html#timerEvent

    定时器事件与所有其他事件一起处理。 QTimer 只是一个很好的定时器事件 API,因此您不必手动处理它们。 QTimer 类会为您解决这个问题。

    【讨论】:

    • 那是什么意思:“作为一种特殊情况,一个超时时间为 0 的 QTimer 将在窗口系统的事件队列中的所有事件都处理完后立即超时。” ?
    • @user31264 只是表示定时器事件会在窗口系统事件处理完后最后处理。
    • 这是否意味着它的优先级低于所有其他事件?因为如果是和所有事件一样的事件,就应该按照它的优先级和发布时间来处理。
    • @user31264 文档说它是在其他事件之后处理的,所以是的,它的优先级较低。但不确定这是否很重要。它保证在下一次主事件循环迭代中被处理。是在其他事件之前还是之后并不重要。
    猜你喜欢
    • 2015-09-25
    • 2011-05-14
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多