QDialog 数据传递
来源:互联网 发布:汉字笔顺在线演示软件 编辑:程序博客网 时间:2024/06/03 19:38
对话框的出现用于完成一个简单的或者是短期的任务。对话框与主窗口之间的数据交互相当重要。对话框分为模态和非模态两种。我们也将以这两种为例,分别进行阐述。模态对话框使用了 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;}
源文来自:http://blog.chinaunix.net/uid-24219701-id-4042825.html
1 0
- QDialog 数据传递
- QDialog
- 数据传递
- 数据传递
- 数据传递
- 传递数据(顺序传递)
- subclass QDialog
- Subclassing QDialog
- SubClassing QDialog
- 对话框 QDialog
- QDialog圆角
- QDialog例程
- QDialog::show
- 对话框-QDialog
- 使用Cookie传递数据
- 使用Cookie传递数据
- ifream中的数据传递
- .net页面数据传递
- 多线程(3)安全性
- HTML中几种为<button>绑定点击事件的方式比较
- 第十三周实践项目1————分数类运算符重载(3)
- phpwind 利用哈希长度扩展攻击进行getshell
- 二叉树--最小路径
- QDialog 数据传递
- 深度学习框架Torch7解析-- Tensor篇
- 判断页面加载后是否所有的下拉框都有数据
- 数据库和实例
- 精灵游戏实现
- Android小记-根据domain清除cookie
- HDOJ3763 二分查找
- Xtext Language
- JavaScript DOM中删除元素