Qt QFileDialog使用方法

头文件

#include <QFileDialog>

成员名称 返回值 说明
getExistingDirectory QString 返回用户选中的文件夹路径
getExistingDirectoryUrl QUrl 与QFileDialog::getExistingDirectory()的主要区别来自于为用户提供的选择远程目录的能力
getOpenFileName QString 返回用户选中的文件名
getOpenFileNames QStringList 返回用户选中的多条文件名
getOpenFileUrl QUrl 为用户提供的选择远程文件的能力
getOpenFileUrls QList<QUrl> 为用户提供的选择多个远程文件的能力
getSaveFileName QString 保存本地对话框
getSaveFileUrl QUrl 为用户提供保存远程保存文件的对话框

Options 对话框选项

名称 说明
QFileDialog::ShowDirsOnly 仅在文件对话框中显示目录。默认情况下,文件和目录都显示出来。(仅在目录文件模式下有效)
QFileDialog::DontResolveSymlinks 不要在文件对话框中解析符号链接。默认情况下符号链接被解析
QFileDialog::DontConfirmOverwrite 不要询问是否选择了现有的文件。默认情况下请求确认
QFileDialog::DontUseNativeDialog 不要使用本机文件对话框。默认情况下,除非使用包含Q_OBJECT宏的QFileDialog子类,或者平台没有所需类型的本机对话框,否则将使用本机文件对话框
QFileDialog::ReadOnly 指示模型是只读的
QFileDialog::HideNameFilterDetails 指示文件名筛选器细节是否隐藏
QFileDialog::DontUseSheet 在以前的Qt版本中,如果静态函数有一个父函数,那么静态函数将默认创建一个工作表。这不再被支持,在Qt 4.5中什么也不做,静态函数将始终是一个应用程序模式对话框。如果希望使用工作表,可以使用QFileDialog::open()
QFileDialog::DontUseCustomDirectoryIcons 始终使用默认的目录图标。有些平台允许用户设置不同的图标。自定义图标查找会对网络或可移动驱动器的性能造成很大影响。设置此选项将启用图标提供程序中的QFileIconProvider::DontUseCustomDirectoryIcons选项。这个enum值是在Qt 5.2中添加的。

UI界面(右边的窗体):

由于是从ui界面转到槽,来写的槽函数,所以没有手写connect函数

getExistingDirectory 返回用户选中的文件夹路径

cpp 复制代码
//获取文件夹路径
void Widget::on_buttonDirectory_clicked()
{
    QString path = QFileDialog::getExistingDirectory(
                this,               //指定父对象
                "获取一个文件夹路径",  //标题
                "../");             //工作路径
    QString tempStr= QString("%1 %2").arg("当前获取的文件夹路径为:").arg(path);
    ui->textEdit->setText(tempStr);
}

getOpenFileName 返回用户选中的文件路径

cpp 复制代码
//获取文件路径
void Widget::on_buttonFileName_clicked()
{
    QString path = QFileDialog::getOpenFileName(
                this,                   //指定父对象
                "获取文件路径",           //标题
                "../",                  //工作路径
                "TXT(*.txt);;Image(*.png *jpg)");        //过滤格式;;过滤格式...
    QString tempStr= QString("%1 %2").arg("当前获取的文件路径为:").arg(path);
    ui->textEdit->setText(tempStr);
}

填写过滤格式参数时,是可以过滤多个格式的,只需在后面加上 " ;; "然后继续填写 格式名(*.后缀)。

"TXT(*.txt) ;; Image(*.png *jpg)"

getOpenFileNames 返回用户选中的多个文件路径

cpp 复制代码
//获取多个文件路径
void Widget::on_buttonFileNames_clicked()
{
    QStringList pathList = QFileDialog::getOpenFileNames(
                this,                   //指定父对象
                "获取多个文件路径",        //标题
                "../",                  //工作路径
                "TXT(*.txt)");          //过滤格式
    ui->textEdit->setText(QString("您当前选择了 %1 个文件").arg(QString::number(pathList.size())));
    for(int i = 0;i < pathList.size(); ++i)
    {
        QString tempStr= QString("当前获取的文件 %1 的路径为:%2")
                .arg(i+1)
                .arg(pathList.at(i));
        ui->textEdit->append(tempStr);
    }
}

在上方3个例子中都有使用到QT字符串格式化QString::arg(),点这里有单独的一篇关于QT字符串格式化的文章哦

getSaveFileName 保存文件对话框

cpp 复制代码
//保存文件对话框
void Widget::on_buttonSaveFile_clicked()
{
    QString path = QFileDialog::getSaveFileName(
                this,
                "保存文件对话框",
                "../",
                "TXT(*.txt)");
}
相关推荐
码农的神经元2 分钟前
2026 MathorCup 选题建议:A/B/C/D/E 题到底怎么选?
c语言·开发语言·数学建模
网域小星球8 分钟前
C++ 从 0 入门(三)|类与对象基础(封装、构造 / 析构函数,面试必考)
开发语言·c++·面试·构造函数·析构函数
Dxy12393102169 分钟前
Python如何去掉文本中的表情符号
开发语言·python
网域小星球13 分钟前
C++ 从 0 入门(二)|引用与指针区别、函数重载、内联函数(面试高频)
开发语言·c++·面试·函数重载·内联函数·引用与指针区别
代码中介商19 分钟前
C++ 多态与虚函数入门:从概念到规则
开发语言·c++
kyle~27 分钟前
工业以太网协议---EtherCAT
开发语言·c++·网络协议·机器人·ros2
say_fall32 分钟前
深入理解AVL树:平衡调整机制与性能优化实战
开发语言·数据结构·c++·学习
赖在沙发上的熊35 分钟前
Python数据序列
开发语言·python
Hello--_--World40 分钟前
Js面试题目录表
开发语言·javascript·ecmascript
聆风吟º41 分钟前
【C标准库】深入理解C语言strcmp函数:字符串比较的核心用法
c语言·开发语言·库函数·strcmp