我正在使用QT框架。我一直在使用SIGNAL-SLOT。我喜欢。 :-) 但是当我使用QThread时,我无法使它工作。我总是使用“moveToThread(QThread ...)”函数创建新线程。 有什么建议吗? :-)信号插槽无法使用QThread
的错误信息是:
对象::连接:没有这样的槽连接:: acceptNewConnection(QString的,INT)在.. \ MultiMITU600 \ mainwindow.cpp:14 对象::连接: (发件人名称:'MainWindow')
我已阅读有关类似问题的消息,但这些问题没有连接到QThread。
谢谢,大卫
编辑:你问源代码 这里是一个:
下面是代码:
,它包含信号和新线程的主类:
mainwindow header:
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 标题的类:
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";
}
最后我在连接的类中使用发射:
void MainWindow::on_pushButton_3_clicked()
{
…
emit NewConnection(port, 1);
}
可能是一个想法,实际显示代码 – paulm
“我总是使用moveToThread(QThread ...)”函数“创建新线程没有任何意义,这不是如何创建线程。 – hyde