在Qt框架中,exec()
方法是QDialog
类(及其子类)的一个成员函数,用于以模态(modal)方式显示对话框。当exec()
被调用时,它会启动一个局部的事件循环,这个循环会阻塞对对话框之外的其他窗口的访问,直到对话框被关闭。
exec()
方法的返回类型通常是int
或QDialog::DialogCode
(后者是一个枚举类型,提供了标准对话框结果的预定义值,如QDialog::Accepted
和QDialog::Rejected
)。返回的值通常用于指示对话框是如何被关闭的,例如用户点击了哪个按钮。
点击按钮打开新窗口
void Widget::on_btnOpen_clicked(){
SetDialog dlg;
dlg.exec();
}
错误写法:窗口一闪而过
void Widget::on_btnOpen_clicked(){
SetDialog dlg;
dlg.show();
//dlg.exec();
}
在Qt框架中,对话框的显示方式通常有两种:模态(modal)和非模态(non-modal)。这两种方式的区别在于用户与对话框之外的其他窗口的交互能力。
当你调用dlg.show()
时,对话框会以非模态方式显示,用户可以与对话框和其他窗口进行交互。
如果你注释掉// dlg.exec();
这一行,那么对话框将以非模态方式继续运行,这是符合预期的。但是,如果你取消注释并调用dlg.exec();
,那么对话框会首先以非模态方式显示(因为show()
已经被调用),然后exec()
会尝试以模态方式运行对话框。这通常会导致一些不期望的行为,因为对话框已经显示了一次,而且exec()
会再次进入事件循环等待对话框关闭。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务