单独创建一个.h文件,声明QEvent的子类
比如MyEvent,实现一个读写日志的任务
class MyEvent:public QEevent
{
public:
enum Type
{
WriteLog = QEevent::User + 1,
ReadLog
};
MyEvent(Type type):QEevent(QEevent::Type(type)){}
}
然后声明MyEvent的子类
class MsgWriteEevent:public MyEvent
{
public:
MsgWriteEevent():MyEvent(WriteLog){}
}
class MsgReadEevent:public MyEvent
{
public:
MsgReadEevent():MyEvent(ReadLog){}
}
现在,后面就可以直接new对应的消息类了
比如:
MsgReadEevent *mrEvent = new MsgReadEevent();
MsgWriteEevent * mwEvent = new MsgWriteEevent();
需要的时候,直接用post
QCoreApplication::postEvent(this, mrEvent);
然后是具体的执行部分,需要实现QObject的event
bool event(QEvent *event);
具体实现:
if (static_cast<MyEvent::Type>(event->type()) == MyEvent::WriteLog) {
//do something
//执行完成后,返回true
return true;
}
最后不要忘了返回父类的event方法,以实现默认的处理。
类似这样:
return QObject::event(event);