(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)
谢谢
854

被折叠的 条评论
为什么被折叠?



