假设我在 Qt 应用程序中有 2 个表单。我需要在 2 个表单之间多次传输数据,所以我使用循环来执行此操作。我只想在表格 1 继续循环之前从表格 2 中获得结果。这是我想要的意图:
当我正常使用循环时,循环从i = 1开始,向Form 2发送数据。在Form 2向Form 1返回结果之前,Form 1继续发送i = 2的数据。
你能给我一些解决方案吗?
谢谢!
您可以使用信号槽概念来实现这一点,
如果 form1 有 form2 的对象(组合)
你可以做
connect(this,SIGNAL(sendData(DataClass),ptr_form2,SLOT(receiveData(DataClass));
connect(ptr_form2,SIGNAL(acknowledge()),this,SLOT(resendData()));
ptr_form2 是 form2 的参考
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
}
如果您在任何第三种形式或类中都引用了这两种形式,那么您可以这样
做
connect(ptr_form1 ,SIGNAL(sendData(DataClass),ptr_form2,SLOT(receiveData(DataClass));
connect(ptr_form2,SIGNAL(acknowledge()),ptr_form1 ,SLOT(resendData()));