我正在使用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