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;

    }

  • 相关阅读:
    Solaris+Oracle安装(详细图解)
    linux卸载和安装jdk
    UTF8, Unicode, GB2312格式串转换之C语言版
    linux安装ant
    在 Linux 平台下使用 JNI
    华为C/C++笔试题(1)
    c面试
    mongodb数据库
    YARN
    NPM(包管理器)
  • 原文地址:https://www.cnblogs.com/judes/p/8227729.html
Copyright © 2011-2022 走看看