假設我在Qt應用程序中有兩種形式。我需要在兩種形式之間多次傳輸數據,所以我使用循環來做到這一點。我只想在Form 1繼續循環之前從Form 2獲得結果。這是我的期望的意圖:如何在Qt中的表單之間傳輸數據序列
當我使用的循環通常,循環開始在I = 1和發送數據,以形成2之前表格2返回結果給形式1,形式1是繼續用i = 2發送數據。
你能給我一些解決方案嗎?
謝謝!
假設我在Qt應用程序中有兩種形式。我需要在兩種形式之間多次傳輸數據,所以我使用循環來做到這一點。我只想在Form 1繼續循環之前從Form 2獲得結果。這是我的期望的意圖:如何在Qt中的表單之間傳輸數據序列
當我使用的循環通常,循環開始在I = 1和發送數據,以形成2之前表格2返回結果給形式1,形式1是繼續用i = 2發送數據。
你能給我一些解決方案嗎?
謝謝!
可以使用信號槽概念來實現這一點,
如果Form1中有窗口2的對象(構圖)
你可以做
connect(this,SIGNAL(sendData(DataClass),ptr_form2,SLOT(receiveData(DataClass));
connect(ptr_form2,SIGNAL(acknowledge()),this,SLOT(resendData()));
ptr_form2是窗口2的參考
DataClass就是你的數據,它可以是任何類型的。用你的類對象或任何數據類型替換它
//sendData is signal, in form1
signals: void sendData(DataClass);
//resendData is slot in form1
private slots: void resendData()
{
emit sendData(objData); // objData is your data
}
//acknowledge is signal in form2
signals: void acknowledge();
//receiveData is public slot in form2
public slots: void receiveData(DataClass data)
{
/*
Do you activity here
*/
emit acknowledge(); // Emit Acknowledge
}
如果你在任何第三窗體或類有兩種形式的參考,那麼你可以做
讓ptr_form1是Form1中
讓ptr_form2的引用是窗口2
connect(ptr_form1 ,SIGNAL(sendData(DataClass),ptr_form2,SLOT(receiveData(DataClass));
connect(ptr_form2,SIGNAL(acknowledge()),ptr_form1 ,SLOT(resendData()));
我也使用Signal&Slot在表單之間傳輸數據。你能解釋更多關於你的答案嗎? –
參考你能不能給一些代碼,比如你如何發送數據到表單2並從表單2得到結果? – thuga
2個表單屬於2個線程還是同一個線程? – trandatnh