[英]Qt - does a QTimer::timeout() signal result in a QEvent?
Qt doc在哪里說明呢?
無處,因為它對QTimer
的用戶無關緊要。 timer事件是實現細節。 它是傳遞給計時器對象本身的,因此您確實必須竭盡全力來攔截它。 QTimer
工作方式如下:
class QTimer : public QObject {
Q_TIMER
QBasicTimer m_timer;
protected:
void timerEvent(QTimerEvent * ev) override {
if (ev->timerId() == m_timer.timerId())
emit timeout();
}
/*...*/
};
如果您考慮一下,在不運行發出信號的代碼的情況下就無法發出任何信號,並且安全地運行此類異步發出代碼的唯一方法是為完成控制的代碼塊編寫代碼,這些代碼將控制權交給了每個機會都有事件循環。 平台會通知事件循環定時器超時,然后立即發出信號。 如果Qt從諸如Unix信號之類的侵入性異步回調發出諸如定時器超時之類的信號,您將陷入深深的麻煩:只需了解一下在信號處理程序中可以執行的操作-它與中斷處理程序沒有什么不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.