Qt 非模态对话框exec()与模态对话框show()
来源:互联网 发布:华为硬件单片机笔试题 编辑:程序博客网 时间:2024/05/17 04:47
下面两段话摘自:《基于嵌入式Linux的Qt图形程序实战开发》P41~42
模式对话框:所谓模式对话框就是说,该对话框会把该应用程序的其他窗口的输入锁定,其他应用程序仍然可以被用户访问。也就是说当一个模式对话框运行时,该应用程序的其他窗口就不能进行操作了。想要恢复对其他对话框的操作必须先处理该模式对话框。因此模式对话框常用于需要用户输入文件名的地方,比如保存文件时。通常情况下,模式对话框运行时调用它的exec()函数。
非模式对话框:所谓非模式对话框其实就是和模式对话框相对应的,在该对话框运行后,仍然可以对该应用程序中的其他窗口进行操作。对于一个非模式的对话框,它的运行通常调用show()函数。
http://blog.csdn.net/goforwardtostep/article/details/53667566
void Dialog::slotAddRow(){// int num = tableWidget->rowCount();// tableWidget->insertRow(num); //下面的代码重要*** int num = tableWidget->rowCount();//得到表格中有多少行 Info *info = new Info(); info->exec(); QString name = info->nametext; tableWidget->insertRow(num); tableWidget->setItem(num,0,new QTableWidgetItem(name));}
模式对话框有自己的事件循环。按照我的理解,实际上 exec() 方法是先设置modal属性为Qt::ApplicationModal,然后调用 show() 显示对话框,最后启用事件循环来阻止exec() 方法的结束。直到窗口关闭,得到返回结果(DialogCode),退出事件循环,最后exec()方法调用结束,exec()方法后的代码将继续执行。
tableWidget->insertRow(num); tableWidget->setItem(num,0,new QTableWidgetItem(name));
而show()函数是非模式对话框,调用后不等对话框关闭马上执行后面的代码。(如果调用了show(),还没等到对话框关闭,就执行了后面的代码,所以就不能添加到tablewidget里)
阅读全文
0 0
- Qt 非模态对话框exec()与模态对话框show()
- Qt - 模态对话框与非模态对话框
- QT模态对话框与非模态对话框
- QT对话框中show和exec的区别
- QT对话框中show和exec的区别
- QT对话框中show和exec的区别
- QT对话框中show和exec的区别
- QT对话框中show和exec的区别
- QT对话框中show和exec的区别
- QT对话框中show和exec的区别
- Qt对话框中show和exec的区别
- QT中对话框的show()和exec()的区别
- QT对话框中show和exec的区别
- QT对话框中show和exec的区别
- QT对话框中show和exec的区别
- Qt里面登录对话框Dialog的show()和exec()
- QT的模态对话框与非模态对话框用法
- Qt模态对话框与非模态对话框的问题
- 1.数据结构与算法绪论
- 图像平均操作为什么能降噪
- scrapy爬知乎返回500
- centos 7.0 firewalld防火墙常用操作
- 《单核工作法图解》阅读笔记
- Qt 非模态对话框exec()与模态对话框show()
- 数据结构实验之排序五:归并求逆序数
- java打印和重写toString
- @Autowired @Resource @Qualifier的区别
- 为什么 Android 要采用 Binder 作为 IPC 机制?
- RunTime.getRunTime().addShutdownHook用法
- 深入浅出理解视频编码H264结构(内涵福利)
- numpy: np.c_
- 数据结构实验之查找七:线性之哈希表