您当前的位置: 首页 >  qt

插件开发

暂无认证

  • 0浏览

    0关注

    492博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Qt-QMessageBox-多线程子线程-错误-信号槽链接

插件开发 发布时间:2022-06-13 09:30:21 ,浏览量:0

文章目录
    • 1.代码解析
    • 2.作者答疑

1.代码解析

  如果采用Qt系统来作为软件开发的基本框架,有一点需要注意,那就是与界面相关的操作必须放在主线程,如果在子线程需要一些界面提示,可以采用什么样的方法,主要思路就是需要切换到主线程,Qt提供的一种机制就是,信号槽,它可以跨越线程。示例代码如下:

#include 
#include 
#include 

//信号槽
z_Thread = new AInstallThread(this);
connect(z_Thread, &AInstallThread::message, this, &MediaInstall::ReceiveMessage, Qt::BlockingQueuedConnection);//阻塞式连接

//发送消息
//构建JSON对象
QJsonObject json;
json.insert("state", "error");
json.insert("msg", QString::fromLocal8Bit("备份文件已经丢失,%1无法恢复,请重新安装!").arg(keyshotver));
//构建JSON文档
QJsonDocument document;
document.setObject(json);
QByteArray byteArray = document.toJson(QJsonDocument::Compact);
QString strJson(byteArray);
emit message(strJson);

//接受消息
//解析数据
QJsonParseError jsonError;
QJsonDocument document = QJsonDocument::fromJson(str.toStdString().data(), &jsonError);
if (jsonError.error == QJsonParseError::NoError)
{
    QJsonObject json = document.object();
    QString state = json["state"].toString();
    if (state == "error")
    {
        QMessageBox::information(this, QString::fromLocal8Bit("提示"), json["msg"].toString());
    }
}

  合理的脚本代码可以有效的提高工作效率,减少重复劳动。

2.作者答疑

  如有疑问,敬请留言。

关注
打赏
1665481431
查看更多评论
立即登录/注册

微信扫码登录

0.0422s