QT 对话框数据传递
2014-04-16 10:21
204 查看
http://blog.chinaunix.net/uid-24219701-id-4042825.html
对话框的出现用于完成一个简单的或者是短期的任务。对话框与主窗口之间的数据交互相当重要。对话框分为模态和非模态两种。我们也将以这两种为例,分别进行阐述。
模态对话框使用了 exec() 函数将其显示出来。exec() 函数执行代码就会被阻塞,后面的语句也就不会被执行到。因此,对于使用了 exec() 显示的模态对话框,我们可以在exec() 函数之后直接从对话框的对象获取到数据值。
实际上,QDialog::exec() 是有返回值的,其返回值是 QDialog::Accepted或者 QDialog::Rejected。一般我们会使用类似下面的代码:
点击(此处)折叠或打开
QDialog dialog(this);
if (dialog.exec()
== QDialog::Accepted)
{
//
do something
} else
{
//
do something else
}
如果是非模态对话框,QDialog::show() 函数会立即返回,我们换一种思路获取数据,那就是使用信号槽机制
由于非模态对话框在关闭时可以调用 QDialog::accept() 或者QDialog::reject() 或者更通用的 QDialog::done() 函数,所以我们可以在这里发出信号。另外,如果找不到合适的信号发出点,我们可以重写QDialog::closeEvent() 函数,在这里发出信号。在需要接收数据的窗口(这里是主窗口)连接到这个信号即可。类似的代码片段如下所示
点击(此处)折叠或打开
//
in dialog:
void UserAgeDialog::accept()
{
emit userAgeChanged(newAge);
// newAge
is an int
QDialog::accept();
}
//
in main window:
void MainWindow::showUserAgeDialog()
{
UserAgeDialog *dialog
= new UserAgeDialog(this);
connect(dialog,
&UserAgeDialog::userAgeChanged, this,
&MainWindow::setUserAge);
dialog->show();
}
//
...
void MainWindow::setUserAge(int age)
{
userAge = age;
}
对话框的出现用于完成一个简单的或者是短期的任务。对话框与主窗口之间的数据交互相当重要。对话框分为模态和非模态两种。我们也将以这两种为例,分别进行阐述。
模态对话框使用了 exec() 函数将其显示出来。exec() 函数执行代码就会被阻塞,后面的语句也就不会被执行到。因此,对于使用了 exec() 显示的模态对话框,我们可以在exec() 函数之后直接从对话框的对象获取到数据值。
实际上,QDialog::exec() 是有返回值的,其返回值是 QDialog::Accepted或者 QDialog::Rejected。一般我们会使用类似下面的代码:
点击(此处)折叠或打开
QDialog dialog(this);
if (dialog.exec()
== QDialog::Accepted)
{
//
do something
} else
{
//
do something else
}
如果是非模态对话框,QDialog::show() 函数会立即返回,我们换一种思路获取数据,那就是使用信号槽机制
由于非模态对话框在关闭时可以调用 QDialog::accept() 或者QDialog::reject() 或者更通用的 QDialog::done() 函数,所以我们可以在这里发出信号。另外,如果找不到合适的信号发出点,我们可以重写QDialog::closeEvent() 函数,在这里发出信号。在需要接收数据的窗口(这里是主窗口)连接到这个信号即可。类似的代码片段如下所示
点击(此处)折叠或打开
//
in dialog:
void UserAgeDialog::accept()
{
emit userAgeChanged(newAge);
// newAge
is an int
QDialog::accept();
}
//
in main window:
void MainWindow::showUserAgeDialog()
{
UserAgeDialog *dialog
= new UserAgeDialog(this);
connect(dialog,
&UserAgeDialog::userAgeChanged, this,
&MainWindow::setUserAge);
dialog->show();
}
//
...
void MainWindow::setUserAge(int age)
{
userAge = age;
}
相关文章推荐
- Qt教程] Qt学习之路第14篇 对话框数据传递
- Qt 学习之路 2(14):对话框数据传递
- 【Qt笔记】对话框数据传递
- QT 对话框数据传递
- QT5 学习之路18---对话框数据传递
- android利用回调函数在对话框中传递数据
- 如何在文档视图结构界面程序中弹出对话框并通过edit control控件传递数据
- 关于多对话框数据的传递问题
- 传递数据到模态对话框并返回信息,更新主页面
- QT通过线程将数据传递给主函数进行显示
- [6]对话框之间的数据传递
- |对话框与对话框数据传递|
- MFC 子对话框向父对话框传递数据
- Jquery 模态对话框 数据传递问题
- Qt 线程间信号槽传递自定义数据类型(qRegisterMetaType的使用)
- 在对话框间传递数据(转自lixiaosan的博客)
- Qt窗口间通过信号槽传递数据
- QT两个ui之间传递数据
- 【Qt】窗体间传递数据(跨控件跨类),三种情况与处理方法
- 传递数据到模态对话框并返回信息,更新主页面