Qt基础 09_数据传送_逆传

/********************************************
* 课程名 :QT编程
* 时 间 :2017年6月5日(周一)下午
* 工程名 :11-dataTranslate2
* 类 名 :dialog11
* 内 容 :【重点】数据传送 - 逆传
* 优快云 :Qt基础 09_数据传送_逆传
********************************************/
目标:主窗口输入点击按钮,弹出新窗口;新窗口可输入两个数,进行计算。若点击“计算”按钮,则弹窗关闭并在主窗口的Label中显示计算结果。若点击“取消”按钮,则弹窗关闭

一、ui界面设计

主窗口:
这里写图片描述
弹窗:
这里写图片描述

二、功能实现——方式一:使用对话框特性

步骤一:实现主窗口弹窗操作
在dialog11.ui中,“弹窗”按钮右键“转到槽”

void Dialog11::on_pushButton_clicked()
{
    //1.弹窗
   newDialog dlg ;
   dlg.exec();
}

步骤二:“计算”按钮和“取消”按钮功能
实现在弹窗后,点击“计算”按钮,关闭弹窗,并显示计算结果在主窗的label中
1、在newdialog.ui中,“计算”按钮右键“转到槽”

void newDialog::on_pushButton_clicked()
{//"确定"按钮
#if 0  //法一:accept()和reject()
    //1.数据回传
    int num1 = ui->lineEdit->text().toInt();
    int num2 = ui->lineEdit_2->text().toInt();
    _sumstr = QString::number(num1+num2);

    //关闭对话框
    this->accept();
#endif

#if 1  //法二
    //1.数据回传
    int num1 = ui->lineEdit->text().toInt();
    int num2 = ui->lineEdit_2->text().toInt();
    _sumstr = QString::number(num1+num2);

    //关闭对话框
    done(QDialog::Accepted);
#endif
}

2、在newdialog.ui中,“取消”按钮右键“转到槽”

void newDialog::on_pushButton_2_clicked()
{//"取消"按钮
    //法一:
    //this->reject();
    //法二:
    done(0);
}

3、在dialog11.cpp的槽函数中添加代码:

void Dialog11::on_pushButton_clicked()
{
   //1.弹窗
   newDialog dlg ;
   int ret = dlg.exec();

   //此时对话框已关闭,但是对象还在 —— 数据还在

   if(QDialog::Accepted == ret)
   {//当点击了"计算"按钮,获取数据并显示
       //2.获取数据
       QString str = dlg._sumstr ;

       //3.显示在Label中
       ui->label->setText(str);
   }
}

三、功能实现——方式二:使用窗口共性

步骤一:实现主窗口弹窗操作
在dialog11.ui中,“弹窗”按钮右键“转到槽”

void Dialog11::on_pushButton_clicked()
{
    //1.弹窗
   newDialog *pdlg = new newDialog ;
   pdlg->setAttribute(Qt::WA_DeleteOnClose);
   pdlg->show();
}

步骤二:“计算”按钮和“取消”按钮功能
实现在弹窗后,点击“计算”按钮,关闭弹窗,并显示计算结果在主窗的label中
1、点击“计算”按钮,发送信号
在newdialog.h中定义信号:

signals:
    void retValue(QString str);

在newdialog.cpp中实现发送信号:

void newDialog::on_pushButton_clicked()
{//"计算"按钮

    //1.计算数据
    int num1 = ui->lineEdit->text().toInt();
    int num2 = ui->lineEdit_2->text().toInt();
    QString sumStr = QString::number(num1+num2);

    //2.数据回传
    emit retValue(sumStr);

    //3.关闭
    this->close();
}

2、主窗口利用槽函数接收信号
在dialog11.h中定义槽函数:

private slots:
    void getValue(QString sum);

在dialog11.cpp中实现槽函数:

void Dialog11::getValue(QString str)
{
    ui->label->setText(str);
}

3、连接:
在dialog11.ui中,“弹窗”按钮右键“转到槽”

void Dialog11::on_pushButton_clicked()
{
    //1.弹窗
   newDialog *pdlg = new newDialog ;

   //2.连接
//法一:使用getValue连接
   //connect(pdlg,SIGNAL(retValue(QString)),this,SLOT(getValue(QString)));
   //法二:直接通过Label连接
   connect(pdlg,SIGNAL(retValue(QString)),ui->label,SLOT(setText(QString)));


   pdlg->setAttribute(Qt::WA_DeleteOnClose);
   pdlg->show();
}

源代码:http://download.youkuaiyun.com/download/c_estbon/9866635

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值