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

设计软件网站制作网站建设whois查询

设计软件网站制作网站建设,whois查询,浙江建设局网站,中山快速做网站公司情况描述 今天我创建了一个QT多线程的工程,框架如下。我希望通过指针的方式,让子线程去直接修改主线程的ui组件,但事与愿违。 class ChildThread : public QThread {Q_OBJECT public:ChildThread (MainThread* par):m_Par(par){}; protecte…

情况描述

今天我创建了一个QT多线程的工程,框架如下。我希望通过指针的方式,让子线程去直接修改主线程的ui组件,但事与愿违。

class ChildThread : public QThread {Q_OBJECT
public:ChildThread (MainThread* par):m_Par(par){};
protected:void run() override {while(true){m_Par.ui->label.setValue()//子线程修改主线程的ui组件}}
public:MainThread* m_Par
};class MainThread : public QWidget {Q_OBJECT
public:MainThread (QWidget *parent = nullptr) : QWidget (parent) {QLabel *label = new QLabel("Current Time: ", this);setCentralWidget(label);// 创建子线程m_ChildThread= new ChildThread (this);// 启动子线程m_ChildThread->start();}
private:ChildThread *m_ChildThread;
};

存在的问题:子线程修改主线程ui是不安全操作

在Qt中,GUI相关的操作(例如更新UI元素)通常应该在主线程中执行。直接在子线程中更新UI是不安全的,可能会导致未定义的行为或崩溃。
正确的做法是:利用QT的信号与槽函数机制。在子线程处理完业务后,发出信号并携带上结果给主线程,交给主线程渲染。

class ChildThread : public QThread {Q_OBJECT
signals:void Msg(const QString& message);
public:ChildThread ();
protected:void run() override {while(true){emit Msg("这是一条消息");}}
public:MainThread* m_Par
};class MainThread : public QWidget {Q_OBJECT
public:MainThread (QWidget *parent = nullptr) : QWidget (parent) {QLabel *label = new QLabel("Current Time: ", this);setCentralWidget(label);// 创建子线程m_ChildThread= new ChildThread ();connect(m_ChildThread, &m_ChildThread::Msg, this, &MainThread::Msg);// 启动子线程m_ChildThread->start();}
private slots:void Msg(const QString& message){ this.label.setText(message); }
private:ChildThread *m_ChildThread;
};

这里要注意两点:
1、信号携带的数据要和槽函数接受的数据保持一致,变量名可以不一样。

子线程信号: signals:void Msg(const QString& message);
主线程槽函数:private slots:void Msg(const QString& message){ this.label.setText(message); }

2、信号与槽函数链接,如果官方的链接方式无效果,就换成直接引用。

方式一 connect(m_ChildThread, SINGAL(m_ChildThread::Msg), this, SLOT(&MainThread::Msg));
方式二 connect(m_ChildThread, &m_ChildThread::Msg, this, &MainThread::Msg);

http://www.khdw.cn/news/56726.html

相关文章:

  • 网站后台管理系统怎么用百度云
  • 鼎湖网站建设公司营销网站策划方案
  • 西安网络公司网站建设网络推广营销
  • 十佳工业设计公司百度seo是什么意思呢
  • 购物网站网页设计图片装修公司网络推广方案
  • 做网站用什么编程有创意的网络广告案例
  • 做幼儿园网站seo线下培训班
  • 合肥网站关键词优化互联网推广平台有哪些
  • 网站如何设计搜索框北京seo专员
  • 定制高端网站百度权重5的网站能卖多少钱
  • 在自己的网站做外链网络营销模式有哪几种
  • 上海专业网站建设报手机百度旧版本下载
  • 临淄网站推广百度搜索开放平台
  • 网页制作素材动漫百度关键词seo公司
  • 网站seo其应用优化王
  • 新闻网站建设研究现状免费自己建网页
  • 朋友找做网站都要收定金台州seo公司
  • 网站建设步骤详解视频百度百科词条
  • 懒人学做网站北京最新疫情情况
  • 杭州怎么做网站seo网站培训班
  • 百度关键词优化公司seo技术大师
  • 小程序开发多少钱?小程序开发公司如何seo搜索引擎优化
  • 网站 图标 素材网络营销是指什么
  • net网站开发 介绍品牌推广方式
  • 想学做网站要去哪里学哈尔滨企业网站seo
  • 顺德品牌网站建设发软文是什么意思
  • 网页价格是什么意思简单的seo
  • 建卡盟网站建设 网站定制开发深圳百度
  • 清城网站seo网站 推广
  • 营销型网站建设 上海百度网盘app官方下载