在Qt中,可以使用信號和槽機制來傳遞線程中的數據。具體步驟如下:
以下是一個簡單的示例:
#include <QThread>
#include <QObject>
class MyThread : public QThread
{
Q_OBJECT
signals:
void dataReady(int value);
protected:
void run() override
{
int result = 42;
emit dataReady(result);
}
};
class MyObject : public QObject
{
Q_OBJECT
public slots:
void onDataReady(int value)
{
qDebug() << "Data received from thread: " << value;
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MyThread thread;
MyObject obj;
QObject::connect(&thread, &MyThread::dataReady, &obj, &MyObject::onDataReady);
thread.start();
return app.exec();
}
在上面的示例中,MyThread類繼承自QThread,定義了一個dataReady信號用于發送數據。MyObject類繼承自QObject,定義了一個槽函數onDataReady用于接收數據。
在主函數中,創建了一個線程對象和一個對象,并連接了線程的dataReady信號和對象的onDataReady槽函數。當線程運行時,會發射dataReady信號,將數據傳遞給主線程中的槽函數onDataReady,從而實現線程中數據傳出來的功能。