## 今天学了什么
今天学习Qt对话框及常用标准对话框。
## 对话框
头文件:<QDialog>
按实际阻塞粒度分为三类(windowModality枚举):
从交互行为上分为两大类:模态对话框、非模态对话框。
- 模态对话框:打开后,限制用户操作其他窗口,用户必须先处理这个框把它关掉才能操作其他窗口;
- 非模态对话框:打开后,不会限制其他窗口交互;
区别 :
- 模态:阻塞别的窗口交互;调用点代码会暂停,等关闭后才往下执行;用 exec();
- 非模态:不阻止别的窗口交互;调用后代码立刻继续执行;用 show();
使用方法:
模态对话框:
QDialog dialog(this);
dialog.exec();
模态对话框:
QDialog *p=new QDialog;
p->setAttribute(Qt::WA_DeleteOnClose); //关闭时自动释放内存
p->show();
注:模态返回值:exec() 是有返回值的(QDialog::Accepted 或 Rejected),通常配合 if (dialog.exec() == QDialog::Accepted) 来判断用户是点了“确定”还是“取消”。
## 常用标准对话框
• QMessageBox:消息提示对话框 (<QMessageBox>)
用来弹出提示、警告、错误、确认选择;大多用静态函数调用,默认模态;只做简单文字+按钮,
只做简单文字+按钮,不能自定义复杂布局。
例:信息对话框:
QMessageBox::information(this,"提示","ok");
• QFileDialog:文件/目录选择对话框 (<QFileDialog>)
打开系统原生文件窗口;用来选文件、多选文件、选文件夹、保存文件;可以拿到文件路径,一般
用静态函数。
例:
QFileDialog::getOpenFileName(this,"打开文件", "D:\\\\", "(*.txt)");
• QColorDialog:颜色拾取对话框 (<QColorDialog>)
调出取色面板,让用户选RGB颜色;返回一个QColor;同样提供静态便捷接口,默认模态。
例:用 QColorDialog 选颜色,并把选中颜色应用到界面背景
QColorDialog::getColor(QColor(0,255,0));
if(color.isValid())
{
centralWidget()->setStyleSheet(QString("background-color:%1").arg(color.name()));
}





