C++ QT 实现自定义事件
自定义事件类
#include <QEvent>class MyEvent : public QEvent
{
public:MyEvent():QEvent(QEvent::Type(myEventType)) {}~MyEvent() {}
public:static int myEventType; //自定义事件类型
};
int MyEvent::myEventType = QEvent::registerEventType();
随便写一个继承QObject的类
#include <QtWidgets/QMainWindow>
#include "ui_MyEventAppl.h"
#include "MyEvent.h"
#include <QPushButton>
#include <QGuiApplication>class MyEventAppl : public QMainWindow
{Q_OBJECTpublic:MyEventAppl(QWidget* parent = nullptr): QMainWindow(parent){ui.setupUi(this);connect(ui.pushButton, &QPushButton::pressed, this, &MyEventAppl::OnButtonClick);//ui.pushButton->installEventFilter(this);//ui.label->installEventFilter(this);}
protected:virtual void customEvent(QEvent* pEvent){if (pEvent->type() == MyEvent::myEventType){ui.label->setText("getMyEvent");}}
private slots:void OnButtonClick(){QGuiApplication::postEvent(/*QGuiApplication::focusObject()*/this, new MyEvent, Qt::NormalEventPriority);}
private:Ui::MyEventApplClass ui;
};
效果