QT5如何实现跨界面输出

在QT5中建立一个Widget1,并在Widget1里加上两个输入数据的lineedit控件和一个“开始”pushbutton控件。

另外添加一个Widget2,在Widget2里放置一个TextBrowser。

想要实现在Widget1中输入数据,点击开始按钮后弹出Widget2并在Widget2中输出前两个数据的加和

在这里我碰到程序异常结束的问题,

用信号和槽函数即可实现,代码如下,如有帮助,请cain采纳,谢谢。

widget1的.h中添加如下内容:

signals:
    void sigCaculate(double,double);  //定义信号

 
private slots:
    void on_pushButton_clicked();  //按钮按下

//widget1.cpp中:

void Widget1::on_pushButton_clicked()
{
    double v1 = ui->lineEdit->text().toDouble();
    double v2 = ui->lineEdit_2->text().toDouble();
    emit sigCaculate(v1,v2);//发送计算信号
}
//-----------------------------
//widget2的.h文件中添加一个public函数:

void SetValue(QString value); //设置计算结果
//在.cpp中实现ruxi如下:

void Widget2::SetValue(QString value)
{
    ui->textBrowser->setText(value);//在控件中输入值
}


//在调用widget1和widget2的类中,tian添加如下内容:

//比如mainwindow.h中:

#include <widget1.h>
#include <widget2.h>
 
namespace Ui {
class MainWindow;
}

 
class MainWindow : public QMainWindow
{
    Q_OBJECT

 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void slotCaculate(double v1,double v2);

 
private:
    Ui::MainWindow *ui;
    Widget1* m_widget1;
    Widget2* m_widget2;
};

//在mainwindow.cpp文件中

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

 
    m_widget1 = new Widget1(this);
    m_widget2 = new Widget2(this);
    //绑定信号
    connect(m_widget1,SIGNAL(sigCaculate(double,double)),this,SLOT(slotCaculate(double,double)));

 
}

 
MainWindow::~MainWindow()
{
    delete ui;
}
//计算结果,并输出到widget2的控件中
void MainWindow::slotCaculate(double v1, double v2)
{
    double v = v1 + v2;
    if(m_widget2)
        m_widget2->SetValue(QString::number(v));
}

 

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y