如何在Qt中的表单之间传输数据序列

时间:2013-07-30 04:09:01

标签: c++ qt

假设我在Qt应用程序中有2个表单。我需要多次在两个表单之间传输数据,所以我使用循环来执行此操作。我只是想在表单1继续循环之前从表单2获得结果。这是我想要的意图:

transfer data

当我正常使用循环时,循环从i = 1开始并将数据发送到表单2.在表单2将结果返回到表单1之前,表单1继续发送i = 2的数据。

你能给我一些解决方案吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用信号槽概念来实现这一目标,

如果form1具有form2(Composition)的对象

你可以做到

 connect(this,SIGNAL(sendData(DataClass),ptr_form2,SLOT(receiveData(DataClass));
 connect(ptr_form2,SIGNAL(acknowledge()),this,SLOT(resendData()));

ptr_form2是form2的引用

DataClass是你的数据,可以是anytype。用你的类对象或任何数据类型替换它

 //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引用form2

 connect(ptr_form1 ,SIGNAL(sendData(DataClass),ptr_form2,SLOT(receiveData(DataClass));
 connect(ptr_form2,SIGNAL(acknowledge()),ptr_form1 ,SLOT(resendData()));