QDialog相关
自定义dialog如果不指定父窗口,则为顶层dialog;指定父类为某一个窗口,dialog会弹出在指定父类窗口的中心。常见的有QColorDialog:选择颜色;QFileDialog:选择文件或者目录;QFontDialog:选择字体;QInputDialog:允许用户输入一个值,并将其值返回;
QMessageBox: 模态对话框,用于显示信息、询问问题等;QPageSetupDialog: 为打印机提供纸张相关的选项;
模态、非模态设置
模态
- 应用程序级别的模态:dialog不消失不能对其他所有窗口进行操作。使用
QDialog::exec()
调用dialog显示。 - 窗口级别的模态:dialog不消失不能对父窗口操作。使用
QDialog::open()
调用显示。
非模态
dialog.show()不会阻塞线程
QMessageBox的使用
- 窗口类型不同,icon不同,有以下几种:
QMessageBox::NoIcon
QMessageBox::Question
QMessageBox::Information
QMessageBox::Warning
QMessageBox::Critical - buttom有以下种类:
QMessageBox::NoButton
QMessageBox::Ok
QMessageBox::Cancel
QMessageBox::Yes
QMessageBox::No
QMessageBox::Abort
QMessageBox::Retry
QMessageBox::Ignore
QMessageBox::YesAll
QMessageBox::NoAll - 使用实例
if(ui->lineEdit->text() == "")
{
QMessageBox messageEditMaterial(QMessageBox::Warning,"提示 ","请输入素材名",QMessageBox::NoButton);
messageEditMaterial.exec();
this->show();
}
else
{
sendDate(ui->lineEdit->text());
this->close();
}
QFileDialog的使用
- 常用函数
QString getOpenFileName(QWidget * parent = 0,
const QString & caption = QString(),
const QString & dir = QString(),
const QString & filter = QString(),
QString * selectedFilter = 0,
Options options = 0)
parent:父窗口。Qt 的标准对话框提供静态函数,用于返回一个模态对话框;
caption:对话框标题;
dir:对话框打开时的默认目录“.” 代表程序运行目录,“/” 代表当前盘符的根目录(特指 Windows 平台;Linux 平台当然就是根目录),这个参数也可以是平台相关的,比如“C:\”等;
filter:过滤器。
我们使用文件对话框可以浏览很多类型的文件,但是,很多时候我们仅希望打开特定类型的文件。比如,文本编辑器希望打开文本文件,图片浏览器希望打开图片文件。过滤器就是用于过滤特定的后缀名。如果我们使用“Image Files(.jpg .png)”,则只能显示后缀名是 jpg 或者 png 的文件。如果需要多个过滤器,使用“;;”分割,比如“JPEG Files(.jpg);;PNG Files(.png)”;
selectedFilter:默认选择的过滤器;
options:对话框的一些参数设定
比如只显示文件夹等等,它的取值是enum QFileDialog::Option,每个选项可以使用 | 运算组合起来。
2. 实际使用
QStringList fileNameList = QFileDialog::getOpenFileNames(this,"文件",".","图片文件(*.png *.jpg *.bmp *.mp4)");
QString file_name, file_path;
QFileInfo file(fileNameList.at(i));//逻辑代码,有i个文件被获取;
file_name = file.fileName();
file_path = file.filePath();