2011-05-09 48 views
12

我剛剛在the Qt event systemQEvent class上的文檔。我對QObject::event()方法的行爲感興趣。該文檔指出:在Qt中的事件傳播

該虛函數接收事件給一個對象,並且如果事件e被識別和處理,則返回true。

event()方法返回false時,預期的行爲是什麼?還有什麼嘗試來處理這個事件?事件是否自動轉發到父對象?

注意:我知道源是可用的,我有一個副本。我理想的是尋找一些解決此問題的文檔。

回答

6

我認爲最好的做法是將事件的基類事件方法明確地轉發,如果你不希望過濾該事件類型(例如return QObject::event(event);),因爲事件函數委託事件的具體處理程序(例如QWidget::keyPressEvent)。

QCoreApplication::notify根據返回值傳播事件。在true上,它認爲該事件已消耗並停止。否則,事件被傳遞給對象的父對象。有關更多信息,請參閱Another Look at Events

+0

「基於返回值傳播事件」是什麼意思?起初這看起來很明顯,但它還傳播到哪裏?活動只有一個接收者。它將如何知道使用哪種接收器? – 2011-05-10 00:08:27

+0

這個最佳實踐在引用的鏈接中有很好的文檔記載,但它並沒有回答這個問題。誰使用這個返回值? – 2011-05-10 00:09:48

+0

查看QCoreApplication :: notify的源代碼。它使用QObject :: event的返回值。事件會傳播到對象的父項(如果有)。 – 2011-05-10 01:05:29