如何在Qt小部件应用程序中添加从QThread继承的新c ++类

时间:2016-12-22 18:58:16

标签: qt qt-creator

我试图关注“voidRealm”中的youtube教程视频。

教师想要添加一个继承自MyThread的新类QThread。他进入了新的C ++类向导,并按如下方式填充:

Old version of Qt Creator

显然,此向导在较新版本的Qt Creator中已更改。这是我打开它时得到的结果:

Newer version of Qt Creator

从屏幕截图中可以看出,新版Qt Creator中缺少“类型信息”字段。那么,我如何添加一个继承自QThread的新C ++类(考虑到QThread继承自QObject)?

1 个答案:

答案 0 :(得分:3)

由于在Qt Creator 3.3.0中添加了新的向导引擎(请参阅Qt博客文章关于Qt creator 3.3.0发布here),“类型信息”选项是不再适用于自定义类。

新的向导引擎允许用户以JSON格式编写自定义向导。您可以看到手册here

由于您只需要一个基本的C ++类(并且不需要生成.ui表单),因此快速解决方法是将“基类”设置为{{向导中的1}}。

screenshot

生成新文件后,您可以编辑生成的类,使其继承自QObject而不是QThread。由于您不熟悉Qt,因此以下列出了您需要做的事情:

  1. QObject添加到#include <QThread>文件。
  2. mythread.h文件中的class MyThread : public QObject更改为class MyThread : public QThread
  3. mythread.h文件中
  4. ,将mythread.cpp更改为MyThread::MyThread(QObject *parent) : QObject(parent)
  5. 旁注:

    • 这只是一个快速的解决方法(它不是问题的最佳解决方案)。更通用的解决方案是创建自己的更好的自定义向导,该向导支持从MyThread::MyThread(QObject *parent) : QThread(parent)继承。
    • 请注意,在没有子类化QThread的情况下,有很多方法可以在Qt中进行多线程处理。工作人员对象通常更受欢迎,请参阅here,您还可以查看Qt博客中的this post