首页 > 其他 > 详细

异步消息postEvent更新界面

时间:2018-01-07 13:04:47      阅读:286      评论:0      收藏:0      [点我收藏+]

其实就是和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;

}

 

异步消息postEvent更新界面

原文:https://www.cnblogs.com/judes/p/8227729.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!