当前位置: 首页 > news >正文

QtConcurrent::run操作界面ui的注意事项(2)

前面的“QtConcurrent::run操作界面ui的注意事项(1)”,末尾说了跨线程的问题,引出了Qt千好万好,就是跨线程不好。下面是认为的最简单的解决办法:使用QMetaObject::invokeMethod(相比较信号-槽),直接看源程序:

// h 头文件中定义
public:Q_INVOKABLE void updateLabel(QString str); //必须添加Q_INVOKABLEQ_INVOKABLE void updateProgressBar(int v);// cpp 实现文件
void Widget::doSomeWork() //子线程函数
{int k=0;while(1){QThread::msleep(100);QString str=QString::asprintf("当前%d", k++);QMetaObject::invokeMethod(this,"updateLabel",Q_ARG(QString, str)); //在线程里更新labelQMetaObject::invokeMethod(this,"updateProgressBar",Q_ARG(int, k)); //在线程里更新progressBar}
}//按钮事件里开启一个线程
void Widget::on_pushButton_clicked()
{QFuture<void> future = QtConcurrent::run(this,&Widget::doSomeWork);
}void Widget::updateLabel(QString str) //更新label控件
{ui->label->setText(str);
}void Widget::updateProgressBar(int v) //更新进度条控件
{ui->progressBar->setValue(v);
}

http://www.lryc.cn/news/342503.html

相关文章:

  • 黑马程序员HarmonyOS4+NEXT星河版入门到企业级实战教程笔记
  • 嵌入式全栈开发学习笔记---C语言笔试复习大全13(编程题9~16)
  • https网站安全证书的作用与免费申请办法
  • 自动化测试再升级,大模型与软件测试相结合
  • centos7 基础命令
  • 【设计模式】之单例模式
  • 3d模型实体显示有隐藏黑线?---模大狮模型网
  • 共享购:全新消费模式的探索与实践
  • Java集合 总结篇(全)
  • Dubbo分层架构深度解析
  • LocalDate 数据库不兼容问题,因为LocalDate 是 long 类型的
  • RVM(相关向量机)、CNN_RVM(卷积神经网络结合相关向量机)、RVM-Adaboost(相关向量机结合Adaboost)
  • Java--方法的使用
  • linux - 主次设备号自动申请
  • 我写了一套几乎无敌的参数校验组件!基于 SpEL 的参数校验组件「SpEL Validator」
  • 输入序列太长 gan CGAN
  • uni-app scroll-view隐藏滚动条的小细节 兼容主流浏览器
  • Java常用API之LinkedList类解读
  • 移动端自适应
  • 自动化运维工具-Ansible
  • 力扣:62. 不同路径
  • store内路由跳转router.push
  • ChatGPT Web Midjourney一键集成最新版
  • springboot mongodb分片集群事务
  • node报错——解决Error: error:0308010C:digital envelope routines::unsupported——亲测可用
  • golang系统内置函数整理
  • 武汉星起航:五对一服务体系,助力创业者成功进军跨境电商市场
  • C++常用库函数——strcmp、strchr
  • vue3怎么使用vant的IndexBar 索引栏
  • VMware常见问题(技巧)总结