QFileDialog dialog class
The QFileDialog dialog class is a subclass of the QDialog class, through which the file or directory to be opened/saved can be selected. Regarding this class, we only need to master the use of some static methods.
/*
通用参数:
- parent: 当前对话框窗口的父对象也就是父窗口
- caption: 当前对话框窗口的标题
- dir: 当前对话框窗口打开的默认目录
- options: 当前对话框窗口的一些可选项,枚举类型, 一般不需要进行设置, 使用默认值即可
- filter: 过滤器, 在对话框中只显示满足条件的文件, 可以指定多个过滤器, 使用 ;; 分隔
- 样式举例:
- Images (*.png *.jpg)
- Images (*.png *.jpg);;Text files (*.txt)
- selectedFilter: 如果指定了多个过滤器, 通过该参数指定默认使用哪一个, 不指定默认使用第一个过滤器
*/
// 打开一个目录, 得到这个目录的绝对路径
[static] QString QFileDialog::getExistingDirectory(
QWidget *parent = nullptr,
const QString &caption = QString(),
const QString &dir = QString(),
QFileDialog::Options options = ShowDirsOnly);
// 打开一个文件, 得到这个文件的绝对路径
[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 = Options());
// 打开多个文件, 得到这多个文件的绝对路径
[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 = Options());
// 打开一个目录, 使用这个目录来保存指定的文件
[static] QString QFileDialog::getSaveFileName(
QWidget *parent = nullptr,
const QString &caption = QString(),
const QString &dir = QString(),
const QString &filter = QString(),
QString *selectedFilter = nullptr,
QFileDialog::Options options = Options());
example:
- open local directory
void MainWindow::on_filedlg_clicked()
{
QString dirName = QFileDialog::getExistingDirectory(
this,
"打开文件",
"E://BaiduNetdiskDownload");
QMessageBox::information(this, "打开目录", "您选择的目录是: " + dirName);
}
running result:
- open a local file
selectedFilter: If multiple filters are specified, specify which one to use by default through this parameter, and use the first filter by default if not specified
void MainWindow::on_filedlg_2_clicked()
{
QString arg("Text files (*.txt)");
QString fileName = QFileDialog::getOpenFileName(
this, "Open File", "E://BaiduNetdiskDownload",
"Images (*.png *.jpg);;Text files (*.txt)");
QMessageBox::information(this, "打开文件", "您选择的文件是: " + fileName);
}
void MainWindow::on_filedlg_2_clicked()
{
QString arg("Text files (*.txt)");
QString fileName = QFileDialog::getOpenFileName(
this, "Open File", "E://BaiduNetdiskDownload",
"Images (*.png *.jpg);;Text files (*.txt)", &arg);
QMessageBox::information(this, "打开文件", "您选择的文件是: " + fileName);
}
void MainWindow::on_filedlg_2_clicked()
{
QString arg("Text files (*.txt *.doc)");
QString fileName = QFileDialog::getOpenFileName(
this, "Open File", "E://BaiduNetdiskDownload",
"Images (*.png *.jpg);;Text files (*.txt *.doc)", &arg);
QMessageBox::information(this, "打开文件", "您选择的文件是: " + fileName);
}
which ends up opening as:
- open multiple local files
Just use string concatenation
void MainWindow::on_filedlg_3_clicked()
{
QStringList fileNames = QFileDialog::getOpenFileNames(
this, "Open File", "e:\\temp",
"Images (*.png *.jpg);;Text files (*.txt)");
QString names;
for(int i=0; i<fileNames.size(); ++i)
{
names += fileNames.at(i) + " ";
}
QMessageBox::information(this, "打开文件(s)", "您选择的文件是: " + names);
}
- Open the save file dialog
void MainWindow::on_filedlg_4_clicked()
{
QString fileName = QFileDialog::getSaveFileName(this, "保存文件", "E://BaiduNetdiskDownload");
QMessageBox::information(this, "保存文件", "您指定的保存数据的文件是: " + fileName);
}