QT5中两个窗体之间传递信息(值)

一个窗体A调用另一个窗体B

1)包含窗体B的头文件#include"B.h"

2)在窗体A中增加slots函数:

public slots:
    void infoRecv(QString);

  实现infoRecv函数体:

void A::infoRecv(QString sInfo)
{
    ui->label->setText(sInfo);//将获取的信息显示出来
}

3)在窗体B中增加signals函数:

signals:
  void infoSend(QString);

4)在窗体A调用B的地方增加窗体交流绑定代码:

B idg = new B();
connect( idg ,SIGNAL(infoSend(QString) ,this ,SLOT(infoRecv(QString)));
idg.init(); //idg窗体的初始化工作
idg.show();

5)在窗体B中增加发送信息的代码:

void B::on_buttonBox_clicked(QAbstractButton *button)
{
    QString sInfo;
    if(ui->buttonBox->button(QDialogButtonBox::Cancel)==button) //需要增加头文件:#include<QPushBox>
        sInfo="cancel"; 
    else if(ui->buttonBox->button ( QDialogButtonBox::OK ) == button )
            sInfo="ok";
    emit infoSend(sInfo); //infoSend函数不需要有函数体
}

至此,实现了在A窗体中调用B窗体,并将B窗体的信息传入到A窗体使用。

如果是父子窗体,在子窗体中调用父窗体的信息,可以在父窗体中增加一个public函数提供给子窗体获取信息使用。

原文地址:https://www.cnblogs.com/lomper/p/3954660.html