/********************************************
* 课程名 :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
389

被折叠的 条评论
为什么被折叠?



