QFileDIalog
QFileDIalog是 Qt 中用于文件打开和保存的对话框,允许用户遍历文件系统,以选择一个或多个文件或目录。
基本用法
getOpenFileName
打开文件对话框,函数原型:
[static] QString QFileDialog::getOpenFileName(QWidget parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString selectedFilter = nullptr, QFileDialog::Options options = …)
一般只提供前几个参数:
QString fileName = QFileDialog::getOpenFileName(this, tr(“Open File”),
“/home”,
tr("Images (.png *.xpm *.jpg)"));
得到的对话框类似下图,对话框中的标签:文件名,打开,取消这些都是中文。有时想用英文,怎么办?把参数补充完整。
fileName =QFileDialog::getOpenFileName(this,"open a c file",".",tr("Files(*.c)"),\
nullptr,QFileDialog::DontUseNativeDialog);
对话框效果类似如下:
getSaveFileName
保存文件对话框,函数原型:
[static] QStringList QFileDialog::getOpenFileNames(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = …)
用法大致与getOpenFileName一致。
定制对话框
QFileDialog类提供了一些Set函数可以定制对话框属性。
QFileDialog *p = new QFileDialog();
p->setOption(QFileDialog::DontUseNativeDialog,true);
p->setWindowTitle("Select a C file");
p->setNameFilter(tr("Files(*.c)"));
p->setDirectory(".");
p->setViewMode(QFileDialog::List);
p->setFileMode(QFileDialog::ExistingFiles);
p->show();
QStringList myCfile;
if (p->exec())
{ myCfile = p->selectedFiles();
...
}
setOption 启用或清除选项,常用的即DontUseNativeDialog。
setViewMode设置路径或文件是list或者detail形式显示。
setFileMode指示用户可以在文件对话框中选择什么,即如果用户单击确定,对话框将返回什么。
- AnyFile:文件名,不管它是否存在。
- ExistingFile:单个现有文件的名称。
- Directory:目录的名称。显示文件和目录。
- ExistingFiles:零个或多个现有文件的名称。
setAcceptMode设置打开或保存,AcceptOpen为打开,AcceptSave为保存,默认AcceptOpen。setLabelText可以设置对话框标签文本。