QT 对话框数据传递
来源:互联网 发布:笔记本性能测试软件 编辑:程序博客网 时间:2024/05/06 22:20
对话框的出现用于完成一个简单的或者是短期的任务。对话框与主窗口之间的数据交互相当重要。对话框分为模态和非模态两种。我们也将以这两种为例,分别进行阐述。
模态对话框使用了 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;
- }
0 0
- QT 对话框数据传递
- QT 对话框数据传递
- Qt 学习之路 2(14):对话框数据传递
- |对话框与对话框数据传递|
- Qt学习之路(5):对话框传递数据|标准对话框QMessageBox
- 对话框数据传递
- 对话框的数据传递
- 对话框之间传递数据
- Qt教程] Qt学习之路第14篇 对话框数据传递
- QT界面数据传递
- MFC对话框之间传递数据
- 用SetWindowLong在对话框之间传递数据
- 6.对话框之间的数据传递
- 关于多对话框数据的传递问题
- 第七节 对话框之间的数据传递
- 两个对话框中间如何传递数据
- MFC不同对话框之间的数据传递
- MFC中两个对话框之间数据传递
- hdu3790
- spring事务处理详解
- 最老程序员创业开发实训3---采用MVC架构的应用Splash页面实现
- java综合(一)spring与struts2整合
- 源码下载中文网站
- QT 对话框数据传递
- 如何编辑SDE数据库
- 06-图4. Saving James Bond - Hard Version (30)
- Xshell 注册密钥
- 【ZOJ3261】【离线并查集】【逆序】【好题】
- java进行多张图片组合一张图片
- Atitit.使用引擎加脚本架构的设计 使用php,js来开发桌面程序。。
- Activity 启动模式以及Inent Flags理解
- linux Web服务程序监控shell脚本