溫馨提示×

qt類之間怎么傳遞數(shù)據(jù)

qt
小億
199
2023-11-10 20:23:23
欄目: 編程語言

在Qt中,可以通過信號和槽機制來實現(xiàn)類之間的數(shù)據(jù)傳遞。以下是一種常見的方法:

  1. 定義一個信號。在發(fā)送數(shù)據(jù)的類中,使用signals關鍵字定義一個信號。例如:
class Sender : public QObject
{
    Q_OBJECT
signals:
    void dataReady(int data);
};
  1. 定義一個槽函數(shù)。在接收數(shù)據(jù)的類中,使用public slots關鍵字定義一個槽函數(shù)。例如:
class Receiver : public QObject
{
    Q_OBJECT
public slots:
    void receiveData(int data);
};
  1. 連接信號和槽函數(shù)。在數(shù)據(jù)發(fā)送類的對象中,可以調(diào)用QObject::connect函數(shù)來連接信號和槽函數(shù)。例如:
Sender sender;
Receiver receiver;

QObject::connect(&sender, SIGNAL(dataReady(int)), &receiver, SLOT(receiveData(int)));
  1. 發(fā)送數(shù)據(jù)。在發(fā)送數(shù)據(jù)的類中,可以通過調(diào)用emit關鍵字和信號函數(shù)來發(fā)送數(shù)據(jù)。例如:
void Sender::sendData()
{
    int data = 10;
    emit dataReady(data);
}
  1. 接收數(shù)據(jù)。在接收數(shù)據(jù)的類中,實現(xiàn)槽函數(shù)來處理接收到的數(shù)據(jù)。例如:
void Receiver::receiveData(int data)
{
    qDebug() << "Received data:" << data;
}

當發(fā)送數(shù)據(jù)的類調(diào)用Sender::sendData()時,信號dataReady(int)被觸發(fā),連接的槽函數(shù)Receiver::receiveData(int)會被調(diào)用,接收到發(fā)送的數(shù)據(jù)并進行處理。

0