文章目录
1.代码解析
- 1.代码解析
- 2.作者答疑
如果采用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.作者答疑如有疑问,敬请留言。