简介
Qt 中使用 QDialog 类实现对话框,通常是设计一个类继承 QDialog。
Qt 的对话框分为模态对话框和非模态对话框,即阻塞和非阻塞对话框,
而模态对话框又有两种:应用程序级别的和窗口级别的,分别指完成对话框之前阻塞整个应用和阻塞关联窗口。
操作
对话框是一个顶级窗口,大多数用于临时任务和短暂交流。
QDialog可能是modal或者modeless;
QDialog还可以提供一个返回值;
(1) Modal Dialogs
Modal Dialog可以阻塞其他窗口的输入,
Dialogs可以是application modal(默认值)或者是window modal。
绝大数调用modal dialog的方式是调用exec(),当dialog关闭的时候,exec()将会提供一个返回值。
一般将OK连接到accep()槽函数,Cancel连接到reject()槽函数。
exec() 和 open()分别为应用程序级别和窗口级别的模态对话框,
show()则为非模态对话框。
QDialog::show(): 非模态,非阻塞的。
QDialog::exec(): 模态 ,阻塞,整个系统阻塞掉。
QDialog::open(): 窗口模态,只会阻塞一个窗口,而不是将整个系统阻塞掉。
- 如果使用exec()默认为模态的。
如果用show()需要设置setModel(true)才是模态的。
3、exec() 是一个循环时间函数,
当调用
accept()(返回QDialog::Accepted),表示确定
reject()(返回QDialog::Rejected),表示取消
done(r)(返回r),
close()(返回QDialog::Rejected),
hide()(返回 QDialog::Rejected),
destory()(返回QDialog::Rejected)。
4、销毁对象
1)调用close()并不会销毁对象,设置属性setAttribute(Qt::WA_DeleteOnClose)才会在close后销毁对象。如果没有设置属性,则效果跟hide()、setVisible()差不多,都只是起一个隐藏作用。