自定义事件类
cpp
#include <QEvent>
class MyEvent : public QEvent
{
public:
MyEvent():QEvent(QEvent::Type(myEventType)) {}
~MyEvent() {}
public:
static int myEventType; //自定义事件类型
};
int MyEvent::myEventType = QEvent::registerEventType();
随便写一个继承QObject的类
cpp
#include <QtWidgets/QMainWindow>
#include "ui_MyEventAppl.h"
#include "MyEvent.h"
#include <QPushButton>
#include <QGuiApplication>
class MyEventAppl : public QMainWindow
{
Q_OBJECT
public:
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;
};
效果