开发者社区> 问答> 正文

Qt多线程的问题,子线程中的this指的是什么??报错

继承QThread

class MyThread : public QThread
在构造函数里面使用

connect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(replyFinished(QNetworkReply *)));
connect的第三个变量this指的是这个线程本身,还是指主线程?

为什么总报错

QObject: Cannot create children for a parent that is in a different thread.

网上查的有点看不懂,能不能通俗的讲一下

展开
收起
爱吃鱼的程序员 2020-06-14 22:08:56 628 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    this指的是对象本身,并不代表线程;

    QThread类及其子类的对象只是一个用于管理线程的普通对象,跟1L说的一样,对象所属的线程取决与创建对象的线程,只有QThread的RUN()函数体里的代码才会在子线程里运行,具体介绍,你可以看文档。

    这个报错,应该是在MyThread定义了某个私有成员,但是又在MyThread重新实现的的run函数体里使用了该成员变量导致的吧。你没给出具体的代码,我不敢肯定喔

    还想问一下,在qt4中也是这样的吗?你说的没错,一下就明白了,十分感谢!

    这个this对应的对象在哪个线程创建,slot的this.replyFinished就在哪个线程执行

    指的这个类、、
     
      
       MyThread
       
      
     
    2020-06-14 22:09:13
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
多IO线程优化版 立即下载
多线程 立即下载
fibjs 模块重构从回调到协程 立即下载

相关实验场景

更多