Qt__自定义事件

#include <QApplication>
#include <QEvent>
#include <QObject>
#include <QDebug>

const QEvent::Type MyEventType = (QEvent::Type)QEvent::registerEventType(QEvent::User+100);

class MyEvent: public QEvent
{
public:
    MyEvent(Type MyEventType):QEvent(MyEventType){}
};

class MyObject: public QObject
{
public:
    void MyEventHandler(QEvent *event);
    bool event(QEvent *event);
};

void MyObject::MyEventHandler(QEvent *event)
{
    qDebug()<<"The event is being handled!";
    event->accept();
}

bool MyObject::event(QEvent *event)
{
    if(event->type() == MyEventType)
    {
        qDebug()<<"event() is dispathing MyEvent";
        MyEventHandler(event);
        if((MyEvent*)event->isAccepted())
        {
            qDebug()<<"The event has been handled!";
            return true;
        }
    }
    return QObject::event(event);
}


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    MyObject mywindow;
    MyEvent myEvent(MyEventType);
    a.sendEvent(&mywindow,&myEvent);
    return a.exec();
}

运行结果

原文地址:https://www.cnblogs.com/narjaja/p/9151101.html