[Interest] About event filter on QApplication
程梁
devbean at outlook.com
Sun Nov 3 16:21:09 CET 2013
Hi, there! I found a problem when I test some apps porting from Qt4 to Qt5.
The code is about event filter on QApplication. Code as following:
class EventFilter : public QObject
{
public:
EventFilter(QObject *watched, QObject *parent = 0) :
QObject(parent),
m_watched(watched)
{
}
bool eventFilter(QObject *watched, QEvent *event)
{ if (watched == m_watched) {
if (event->type() == QEvent::MouseButtonPress) {
qDebug() << "QApplication::eventFilter";
}
}
return true;
}
private:
QObject *m_watched;
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel label;
label.resize(300, 160);
app.installEventFilter(new EventFilter(&label, &label));
label.show();
return app.exec();
}
As you could see, I installed a global event filter on QApplication. Note that I have returned true in the filter which means all events should stop processing. In Qt4, the output ("QApplication::eventFilter") will still there but with Qt5 nothing outputs. This might because watched and m_watched is not the same (QWidgetWindow). But when I changed to return false as default code, the output is there again. Maybe in Qt5 the return value also changes watched objects? I cannot find any documents about this. Could you help me? Thank you!
Cheng Liang
Nanjing, China
http://www.devbean.net
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20131103/b007ed4f/attachment.html>
More information about the Interest
mailing list