我正在使用 QT 框架。我一直在使用 SIGNAL-SLOT 一段时间。我喜欢。:-) 但是当我使用 QThread 时我无法让它工作。我总是使用“moveToThread(QThread ...)”函数创建新线程。有什么建议吗?:-)
错误信息是:
Object::connect: No such slot connection::acceptNewConnection(QString,int) in ..\MultiMITU600\mainwindow.cpp:14 Object::connect: (sender name: 'MainWindow')
我读过类似的问题,但这些问题没有连接到 QThread。
谢谢,大卫
已编辑:您要求提供源代码这是一个:
这是代码:
包含信号和新线程的主类:
主窗口标题:
class MainWindow : public QMainWindow
{
…
QThread cThread;
MyClass Connect;
...
signals:
void NewConnection(QString port,int current);
…
};
上述类的构造函数:.cpp
{
…
Connect.moveToThread(&cThread1);
cThread.start(); // start new thread
….
connect(this,SIGNAL(NewConnection(QString,int)),
&Connect,SLOT(acceptNewConnection(QString,int))); //start measuring
…
}
包含新线程和 SLOT Header 的类:
class MyClass: public QObject
{
Q_OBJECT
….
public slots:
void acceptNewConnection(QString port, int current);
}
以及上述类的 .cpp 文件:
void MyClass::acceptNewConnection(QString port, int current){
qDebug() << "This part is not be reached";
}
最后,我在建立连接的类中使用了 emit:
void MainWindow::on_pushButton_3_clicked()
{
…
emit NewConnection(port, 1);
}