Qt 多线程编程:RunScript 类构造函数错误及解决方法
Qt 多线程编程:RunScript 类构造函数错误及解决方法/n/n在使用 Qt 多线程编程时,我们经常会自定义线程类来执行特定的任务。以下代码片段展示了一个名为 RunScript 的线程类,用于执行录制好的脚本:/n/n头文件:/n/ncpp/n#ifndef MYTHREAD_H/n#define MYTHREAD_H/n#include <QDebug>/n#include <QThread>/n/nclass RunScript: public QThread/n{/n Q_OBJECT/npublic:/n explicit RunScript(QObject *parent = nullptr);/n void setRunData(int _runTime, QString _jbText);/n/nsignals:/n /nprivate:/n int runTime;//执行次数/n QString jbText;//录制的脚本/nprotected:/n void run() override;//override是重写父类的这个函数的意思/n/n};/n/n#endif // MYTHREAD_H/n/n/ncpp 文件:/n/ncpp/n#include /'mythread.h/'/n/nRunScript::RunScript(QThread *parent): QThread(parent)/n{/n/n/n/n}/n/nvoid RunScript::setRunData(int _runTime, QString _jbText)/n{/n runTime=_runTime;/n/n jbText=_jbText;/n}/nvoid RunScript::run(){/n/n qDebug()<<runTime<<' '<<jbText;/n/n/n/n}/n/n/n错误:/n/n编译以上代码时,可能会遇到以下错误:/n/n/nd://QTProjects//JBMN//mythread.cpp:3: error: no declaration matches 'RunScript::RunScript(QThread*)'/n../JBMN//mythread.cpp:3:1: error: no declaration matches 'RunScript::RunScript(QThread*)'/n 3 | RunScript::RunScript(QThread *parent): QThread(parent)/n | ^~~~~~~~~/n/n/n原因:/n/n错误的原因在于构造函数的声明中,应该是 RunScript::RunScript(QObject *parent) 而不是 RunScript::RunScript(QThread *parent)。因为 QThread 并不是 RunScript 的父类,而是 QObject,所以需要传入 QObject * 类型的指针。/n/n解决方法:/n/n将 cpp 文件中构造函数的声明修改为以下代码:/n/ncpp/nRunScript::RunScript(QObject *parent): QThread(parent)/n{/n/n/n/n}/n/n/n总结:/n/n在使用 Qt 多线程编程时,需要仔细检查自定义线程类的构造函数参数类型,确保其与父类匹配。否则会导致编译错误。/n
原文地址: https://www.cveoy.top/t/topic/nsTc 著作权归作者所有。请勿转载和采集!