一、综述:
操作系统一般都会提供一些列的标准对话框,如文件选择、字体选择、颜色选择等,这些标准对话框为应用层序提供了一致的观感。
Qt对这些标准对话框都定义了相关的类,
QFileDialog、QFontDialog、QColorDialog、
QInputDialog、QMessageBox、QPrintDialog、
QErrorMessage、QProgressDialog
二、QFileDialog:
1、getOpenFileName()是QFileDialog类的一个静态函数,返回用户选择的文件名,如果用户选择取消(Cancel),则返回一个空串。
函数形式如下:
QString QFileDialog::getOpenFileName(
QWidget * parent = 0,
const QString & caption = QString(),
const QString & dir = QString(),
const QString & filter = QString(),
QString * selectedFilter = 0,
Options options = 0 );
调用getOpenFileName()函数将创建一个模态的文件对话框。
dir参数指定了默认的目录;
filter参数对文件系统进行过滤,只有与过滤器匹配的文件类型才显示,filter可以同时指定多种过滤方式供用户选择,多种过滤器之间用“;;”隔开,用户选择的过滤器通过参数selectedFilter返回。
代码:
//定义文件对话框类
QFileDialog *fileDialog = new QFileDialog(this);
//定义文件对话框标题
fileDialog->setWindowTitle(tr("打开文件"));
//设置默认文件路径
fileDialog->setDirectory(".");
//设置文件过滤器
fileDialog->setNameFilter(tr("Images(*.png *.jpg *.jpeg *.bmp)"));
//fileDialog->setNameFilter(tr("text(*.txt)"));
//设置可以选择多个文件,默认为只能选择一个文件QFileDialog::ExistingFiles
fileDialog->setFileMode(QFileDialog::ExistingFiles);
//设置视图模式
fileDialog->setViewMode(QFileDialog::Detail);
//打印所有选择的文件的路径
QStringList fileNames;
if (fileDialog->exec())
{
fileNames = fileDialog->selectedFiles();
}
for (auto tmp : fileNames)
{
qDebug() << tmp << endl;
}