zoukankan      html  css  js  c++  java
  • QEvent postEvent/sendEvent

    可以自訂事件類型,最簡單的方式,是透過QEvent::Type指定事件類型的常數值,在建構QCustomEvent時作為建構引數並透過postEvent()傳送事件,例如:

    const QEvent::Type MyEvent = (QEvent::Type) 9393;
    ...
    QApplication::postEvent(object, new QCustomEvent(MyEvent));


    自訂事件必須定義事件號碼(Event number),自定義的事件號碼必須大於QEvent::Type的列舉值,通常1024以下的值是保留給Qt預先定義的事件類型來使用。object是事件的接受者,使用 postEvent()方法時,事件必須以new的方式建立,在事件處理完畢之後,會自動將事件delete,postEvent()會將事件放至事件佇列的尾端,然後立即返回。若要強迫Qt馬上處理先前postEvent()排到佇列的事件,則可以使用sendPostedEvents()。

    您可以使用sendEvent()方法,
    事件會立即送至接受者,sendEvent()方法的事件不會被delete,所以通常建立在堆疊(Stack)區,例如:

    CustomEvent event("Event Message");
    QApplication::sendEvent(object, &event);


    自訂的事件類型必須是QEvent的子類別,通常繼承QCustomEvent類別,建立自訂事件類別可以獲得更多的型態安全(Type safety)。

    要處理自訂事件,可以重新定義customEvent()方法,例如:

    void CustomWidget::customEvent(QCustomEvent *event) {
        CustomEvent *customEvent = static_cast<CustomEvent *>(event);
        ....
    }


    或是重新定義event()方法,將自訂事件分派給其它函式或直接在event()中處理,例如:

    bool CustomWidget::event(QEvent *event) {
        if (event->type() == MyCustomEventType) {
            CustomEvent *myEvent = static_cast<CustomEvent *>(event);
            // 對自訂事件的處理,或呼叫其它函式來處理事件
            return true;
        }

        return QWidget::event(event);
  • 相关阅读:
    matplotlib基础
    numpy基础
    池化层的前向计算
    卷积神经网络应用于MNIST数据集分类
    用tensorflow的Eager执行模式
    tensorboard网络结构
    优化器
    交叉熵
    [webpack]——loader配置
    [webpack]--webpack 如何解析代码模块路径
  • 原文地址:https://www.cnblogs.com/senior-engineer/p/8124537.html
Copyright © 2011-2022 走看看