Qt 线程安全问题

        最近做一个交互式的界面更新程序。用指令接收的线程去处理界面刷新的函数,发现会报错,并且界面也不刷新。经过百度,发现是线程安全问题。子线程是不可以处理主线程。发现有很多相关介绍,一个方法为 使用connect 方式的信号槽来处理。一个方式为moveToThread 来进行处理。我只完成了connect 方式,而moveToThread 没有通过验证,有通过的大神,请指教。

        下面为我的代码结构。

        一个为界面模型,里面包含 insert 函数。
    beginInsertRows(QModelIndex(), index, index);
    m_dataList.insert(index, data);
    endInsertRows(); //这个为产生异常原因

        一个为指令通信线程,接收从UI下传的指令。然后进行处理.

        while(isRunning())
        {

                switch(cmd)

                {

                        case INSERTDATA:

                                QVariant data(json);

                                emit signalToUpdate(data);

                        break;

                }

        }

采用connect 关联槽函数。

connect(this,&CmdProcess::signalToUpdate,this,&CmdProcess::startToUpdate);

void CmdProcess::startToUpdate(QVariant  data)

{

        QJsonObject msg = data.toJsonObject(); //采用了QJsonObject 需要进行类型转换。

        Append(msg);

}
关于为什么需要线程,主要是防止在直接的回调里面会产生阻塞,从而导致界面卡顿。   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dreamliweiming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值