zoukankan      html  css  js  c++  java
  • 异步消息postEvent更新界面

    其实就是和Qt::QueuedConnection时的信号槽一样,属于异步的。

    1、新建QEvent子类

    ①、头文件

    #ifndef MYEVENT_H

    #define MYEVENT_H

    #include <QString>

    #include <QEvent>

    class MyEvent : public QEvent

    {

    QString m_data;

    public:

    const static Type TYPE = static_cast<Type>(QEvent::User + 0xFF);

    MyEvent(QString data = "");

    QString data();

    };

    #endif // MYEVENT_H

    ②、cpp

    #include "myevent.h"

    MyEvent::MyEvent(QString data) : QEvent(TYPE)

    {

    m_data = data;

    }

    QString MyEvent::data()

    {

    return m_data;

    }

    2、在任何需要发送消息的地方

    QApplication::postEvent(parent(), new MyEvent("Begin"));//必须在堆上建空间

    for(int i=0; i<10000; i++)

    {

    QApplication::postEvent(parent(), new MyEvent(QString::number(i)));

    msleep(1);

    }

    QApplication::postEvent(parent(), new MyEvent("End"));

    3、在主界面中处理消息

    bool MainWindow::event(QEvent *evt)

    {

    bool ret = true;

    if( evt->type() == MyEvent::TYPE )

    {

    MyEvent* se = dynamic_cast<MyEvent*>(evt);

    if( se != NULL )

    {

    ui->plainTextEdit->appendPlainText(se->data());

    }

    }

    else

    {

    ret = QWidget::event(evt);

    }

    return ret;

    }

  • 相关阅读:
    个人作业——软件评测
    结对第二次作业
    寒假作业(2/2)
    寒假作业(1/2)
    markdown整理
    我们一定会在人生的更高处相见的
    时间复杂度 分析 可能算法
    有关数学 结论 规律 题目 小结
    jzyz 题库 选做 及 知识小结
    隔板法
  • 原文地址:https://www.cnblogs.com/judes/p/8227729.html
Copyright © 2011-2022 走看看