溫馨提示×

qt如何把線程里的數(shù)據(jù)傳出來

qt
小億
149
2024-03-06 10:55:04
欄目: 編程語言

在Qt中,可以使用信號和槽機制來傳遞線程中的數(shù)據(jù)。具體步驟如下:

  1. 在線程類中定義一個信號,用于發(fā)送數(shù)據(jù)。
  2. 在主線程中連接這個信號和一個槽函數(shù),用于接收數(shù)據(jù)。
  3. 在線程中發(fā)射這個信號,傳遞數(shù)據(jù)給主線程。

以下是一個簡單的示例:

#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信號用于發(fā)送數(shù)據(jù)。MyObject類繼承自QObject,定義了一個槽函數(shù)onDataReady用于接收數(shù)據(jù)。

在主函數(shù)中,創(chuàng)建了一個線程對象和一個對象,并連接了線程的dataReady信號和對象的onDataReady槽函數(shù)。當線程運行時,會發(fā)射dataReady信號,將數(shù)據(jù)傳遞給主線程中的槽函數(shù)onDataReady,從而實現(xiàn)線程中數(shù)據(jù)傳出來的功能。

0