网站维护工作方案,游戏开发大亨内购破解版,wordpress cms 中文版,国家企业信用信息公示系统辽宁1 介绍 事件过滤器是一种机制#xff0c;当某个QObject没有所需要的事件功能时#xff0c;可将其委托给其它QObject#xff0c;通过eventFilter成员函数来过滤实现功能。
2 主要构成 委托#xff1a; ui-QObject1-installEventFilter(QObject2); eventFilter声明 …1 介绍 事件过滤器是一种机制当某个QObject没有所需要的事件功能时可将其委托给其它QObject通过eventFilter成员函数来过滤实现功能。
2 主要构成 委托 ui-QObject1-installEventFilter(QObject2); eventFilter声明 virtual bool eventFilter(QObject *watched, QEvent *event) override; 在Qt creator中可以使用如下步骤简化实现 a右键widget b选择insert Virtual。。。 c选择eventFilter并勾选如下稍后将定义粘贴到对应的.cpp文件中即可 3 示例代码使用事件过滤器对label实现单双击事件响应 widget.cpp
#include widget.h
#include ui_widget.h
#include QEvent
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui-setupUi(this);//将label委托给widgetui-labelSC-setText(单击我);ui-labelSC-installEventFilter(this);ui-labelDC-installEventFilter(this);
}Widget::~Widget()
{delete ui;
}bool Widget::eventFilter(QObject *watched, QEvent *event)
{if(watched ui-labelSC){if(event-type() QEvent::Enter)ui-labelSC-setStyleSheet(background-color:rgb(170,255,255));else if(event-type() QEvent::Leave){ui-labelSC-setText(单击我);ui-labelSC-setStyleSheet();}else if(event-type() QEvent::MouseButtonPress)ui-labelSC-setText(MouseButtonPress);else if(event-type() QEvent::MouseButtonRelease)ui-labelSC-setText(MouseButtonRelease);}if(watched ui-labelDC){if(event-type() QEvent::Enter)ui-labelDC-setStyleSheet(background-color:rgb(170,0,255));else if(event-type() QEvent::Leave){ui-labelDC-setText(双击我);ui-labelDC-setStyleSheet();}else if(event-type() QEvent::MouseButtonDblClick)ui-labelDC-setText(MouseButtonDblClick);else if(event-type() QEvent::MouseButtonRelease)ui-labelDC-setText(MouseButtonRelease);}return QWidget::eventFilter(watched, event);
}widget.h
#ifndef WIDGET_H
#define WIDGET_H#include QWidgetQT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();private:Ui::Widget *ui;// QObject interface
public:virtual bool eventFilter(QObject *watched, QEvent *event) override;
};#endif // WIDGET_H