自定义QT事件

 

一、事件ID异步

     本质上就是一个整型值。0-999做为系统保留字段,自定义事件从QEvent::User(也就是1000)开始,函数

     例如:post

        #define MY_EVENT QEvent::User+100.net

     大部分状况下自定义事件是不会冲突的,若是咱们还引入了其余库,也不彻底能确保如此,最好的方式就是经过系统事件获取事件ID。对象

        static int QEvent::registerEventType ( int hint = -1 );队列

     注册并返回一个用户自定义事件,若是hint对应的事件可用,则直接返回hint做为事件ID,不然,返回一个可用的事件ID;事件

 

二、事件数据get

     咱们能够经过从QEVENT派生,自定义事件所关联的数据;同步

         class QMyEvent : public QEVENTqt

 

三、事件发送

     两种方式:

     一、同步发送static bool QCoreApplication::sendEvent(QObjecy * receiver, QEvent * event):

          QMyEvent event;
          QApplication::sendEvent(receiver, &event );

          同步发送的事件是当即发送给receiver对象执行,返回值也就是事件处理后的返回值,因此event能够是栈变量;

 

     二、异步发送static bool QCoreApplication::postEvent(QObject * receiver, QEvent * event):

         QMyEvent* event = new QMyEvent();
         QApplication::postEvent(receiver, event );

         异步事件是向receiver对象的事件队列投递事件(添加到末尾),投递后当即返回;

 

四、事件处理

    一、重载event函数

         void QObject::event(QEvent* event)

 

    二、重载CustomEvent;

         void QObject::customEvent(QEvent* event)

 

    三、经过EventFilter处理;

相关文章
相关标签/搜索