当我们需要自定义事件时,可以先创建一个类继承QEvent:
//myevent.h
#include <QEvent>
class MyEvent: public QEvent
{
public:
MyEvent(int value1, double value2);
static Type eventType;
//可以定义一些成员或者函数来进行参数传递
int getValue1();
double getValue2();
private:
int _value1;
double _value2;
};
每个事件都需要有一个事件类型,而在QEvent::Type的枚举值中,User(1000)到MaxUser(65535)之间的值可被用于自定义的事件。因此,我们还要使用QEvent::registerEventType函数对自定义的事件进行注册,同时用这个注册过的值来初始化我们自定义的事件的类。
//myevent.cpp
QEvent::Type MyEvent::eventType = (QEvent::Type)QEvent::registerEventType(QEvent::User+1);
MyEvent::MyEvent(int value1, double value2)
: QEvent(Type(eventType)), _value1(value1), _value2(value2)
{
}
int MyEvent::getValue1() { return _value1; }
double MyEvent::getValue2() { return _value2; }
事件使用以下两个函数发送&#x