(187) 理论讲解 :
++ 事件过滤功能要用到 QObject 里的这些成员函数的支持 :
++详细的源码讲解 :
//这个虚拟函数接收对象的事件,并且如果事件 event被识别和处理,则应返回true。
//event()函数可以被重新实现以自定义对象的行为。确保你为所有未处理的事件调用父事件类实现。
/*
class MyClass : public QWidget
{
Q_OBJECT
public:
MyClass(QWidget * parent = nullptr);
~MyClass();
bool event(QEvent * ev) override
{
if (ev->type() == QEvent::PolishRequest) {
// overwrite handling of PolishRequest if any
doThings();
return true;
} else if (ev->type() == QEvent::Show) {
// complement handling of Show if any
doThings2();
QWidget::event(ev);
return true;
}
// Make sure the rest of events are handled
return QWidget::event(ev);
}
};
*/
virtual bool event ( QEvent * event);
++
++
(188)接着开始本节例题的代码实现 :
++以及 :
++可见,很简单,不用再为了完善事件处理而必须自定义控件,使用父类的事件过滤即可。
(189)
谢谢