假设我在Qt应用程序中有2种形式。我需要在2种形式之间多次传输数据,因此我使用循环来完成此操作。我只是想在Form 1继续循环之前从Form 2获取结果。这是我想要的意图:



当我正常使用循环时,循环从i = 1开始并将数据发送到Form2。在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
  }


如果您在任何第三种形式或类中都引用了这两种形式,则可以
      让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()));

关于c++ - 如何在Qt中的表单之间传输数据序列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17938145/

10-10 14:14
查看更多