根据Qt Event 处理机制,分析如下代码: class MonitorObject : public QObject { public: MonitorObject() {} protected: bool eventFilter(QObject*obj, QEvent *event); }; bool MonitorObject::eventFilter(QObject*obj, QEvent *event) { qDebug(“eventFilter\n”); returnfalse; } class MyWidget : public QWidget { public: MyWidget(QWidget* parent = 0): QWidget (parent) {} protected: virtual bool event(QEvent *event); virtual void keyPressEvent(QKeyEvent* event); }; bool MyWidget::event(QEvent * event) { qDebug(“event\n”); return QWidget::event(event); } void MyWidget::keyPressEvent(QKeyEvent *event); { qDebug(“keyPressEvent\n”); MyWidget:: keyPressEvent(event); } int main(int argc, char **argv) { QApplication a(argc, argv); MonitorObject *pMonitorObject= new MonitorObject; MyWidget *pWidget = newMyWidget; pWidget->installEventFilter(pMonitorObject); pWidget->show(); return a.exec(); } 启动程序,当键盘事件(Key Press)发生时,列出打印信息。
请大神们帮我看看这个题。谢谢了
|