[英]QThread console app - no such signal, no such slot
我最近使用通过重新实现 run() virtual void 的方法成功地为我的 GUI 应用程序实现了多线程,但我读到 QT 中的线程存在很多混淆,因为即使文档没有正确显示它。 我现在正在尝试的只是了解它的工作原理并使用它没有任何问题,甚至乍一看也不明显。 我想知道下面的代码有什么问题,因为我在启动时从 Visual Studio 获取了一些错误的信息,并且我看到“QtRunWork”任务返回错误但没有记录错误。”当我忽略这个并且启动我在控制台中得到的程序:“qt.core.qobject.connect: QObject::connect: No such slot QObject::process() in (..)main.cpp:38 qt.core.qobject。连接:QObject::connect:没有这样的信号 QObject::finished() in (..)main.cpp:39 qt.core.qobject.connect: QObject::connect: 没有这样的信号 QObject::finished() in ( ..)main.cpp:40""
#include <QtCore/QCoreApplication>
#include <QCoreApplication>
#include <QThread>
#include <QString>
#include <QDebug>
class Worker : public QObject {
Q_OBJECT
public slots:
void process() {
qDebug() << "Thread1";
emit finished();
}
signals:
void finished();
};
class MyThread : public QThread {
public:
MyThread();
signals:
void finished();
};
MyThread::MyThread() {
Worker* w = new Worker();
w->moveToThread(this);
connect(this, SIGNAL(started()), w, SLOT(process()));
connect(w, SIGNAL(finished()), this, SLOT(quit()));
connect(w, SIGNAL(finished()), w, SLOT(deleteLater()));
connect(this, SIGNAL(finished()), this, SLOT(deleteLater()));
this->start();
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
MyThread m;
return a.exec();
}
不要在你的线程 class 中声明信号finished
。 QThread
已经有这个信号https://doc.qt.io/qt-5/qthread.html#finished
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.