/******************************************************
* 课程名 :QT编程
* 时 间 :2017年6月5日(周一)下午
* 工程名 :10-dataTranslate
* 类 名 :dialog10
* 内 容 :【重点】数据传送 - 顺传
* 优快云 :Qt基础 08_数据传送_顺传
******************************************************/
目标:窗口输入两个数,进行计算,弹出新窗口,点击“显示”按钮后,在Label中显示计算结果。
一、弹出窗口的文件建立
新建Qt设计师界面类:
二、绘制ui界面
主窗口:
弹出的窗口:
三、方式一:纯C++方式(耦合性大),不使用信号和槽
步骤一:主窗口的功能
1、在dialog.h中手动定义槽函数:(等同于转到槽)
private slots:
void calcuPushButton(void);
2、在dialog.cpp中实现槽函数:
void Dialog10::calcuPushButton()
{
//1.获取数据
int num1 = ui->lineEdit->text().toInt();
int num2 = ui->lineEdit_2->text().toInt();
int sum = num1 + num2 ;
//2.弹出新的对话框
NewDialog dlg(sum) ;
dlg.exec();
}
3、在构造函数中添加连接:
connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(calcuPushButton()));
步骤二:弹出窗口的功能
1、在newsdialog.h中重载构造函数:
public:
explicit NewDialog(QWidget *parent = 0);
explicit NewDialog(int sum, QWidget *parent = 0);
定义私有成员:
private:
Ui::NewDialog *ui;
int _sum;
2、在newsdialog.cpp中实现:
//重载的构造函数
NewDialog::NewDialog(int sum, QWidget *parent):
QDialog(parent),
ui(new Ui::NewDialog), _sum(sum)
{
ui->setupUi(this);
// ui->lineEdit->setText(QString::number(sum));
}
3、在newdialog.h中定义槽函数:
private slots:
void on_pushButton_clicked(); //声明"显示"按钮的槽函数
在newdialog.cpp中实现:
void NewDialog::on_pushButton_clicked()
{
ui->lineEdit->setText(QString::number(_sum));
}
四、方式二:信号和槽
步骤一:主窗口的功能
1、在dialog.h中定义信号:
signals:
void sumResult(QString strSum);
2、在dialog.cpp中实现:
void Dialog10::calcuPushButton()
{
//1.获取数据
int num1 = ui->lineEdit->text().toInt();
int num2 = ui->lineEdit_2->text().toInt();
QString sumStr = QString::number(num1 + num2 );
//2.弹出新的对话框
NewDialog dlg;
connect(this,SIGNAL(sumResult(QString)),&dlg,SLOT(getSumResult(QString)));
emit sumResult(sumStr);
dlg.exec();
}
步骤二:弹出窗口的功能
1、在newdialog.h中定义槽函数:
private slots:
void on_pushButton_clicked(); //声明"显示"按钮的槽函数
void getSumResult(QString sumStr);
2、在newdialog.cpp中实现槽函数:
void NewDialog::getSumResult(QString sumStr)
{
ui->lineEdit->setText(sumStr);
}
五、方式三:信号和槽(不用exec(),用show())
其余都与四相同
在dialog.cpp中实现改为:
void Dialog10::calcuPushButton()
{
//1.获取数据
int num1 = ui->lineEdit->text().toInt();
int num2 = ui->lineEdit_2->text().toInt();
QString sumStr = QString::number(num1 + num2 );
//2.弹出新的对话框
NewDialog *pdlg = new NewDialog;
pdlg->setAttribute(Qt::WA_DeleteOnClose);
connect(this,SIGNAL(sumResult(QString)),pdlg,SLOT(getSumResult(QString)));
pdlg->show();
emit sumResult(sumStr);
}
源代码:http://download.youkuaiyun.com/download/c_estbon/9865733