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)");
}
相关推荐
chao1898444 小时前
基于 SPEA2 的多目标优化算法 MATLAB 实现
开发语言·算法·matlab
赏金术士4 小时前
Kotlin 习题集 · 高级篇
android·开发语言·kotlin
楼兰公子5 小时前
buildroot 在编译rust时裁剪平台类型数量的方法
开发语言·后端·rust
吴声子夜歌5 小时前
Go——并发编程
开发语言·后端·golang
ooseabiscuit6 小时前
Laravel4.x:现代PHP框架的奠基之作
java·开发语言·php
c1s2d3n4cs6 小时前
Qt模仿nlohmann::json进行序列化和反序列化
开发语言·qt·json
AiTop1007 小时前
Claude Code 推出 Agent View:命令行编程正式进入“多线程并发“时代
开发语言·人工智能·ai·aigc
jf加菲猫7 小时前
第21章 Qt WebEngine
开发语言·c++·qt·ui
码农-阿杰7 小时前
深入理解 synchronized 底层实现:从 HotSpot C++ 源码看对象锁与 Monitor 机制
开发语言·c++·
2401_832298108 小时前
AI智能体监管落地,OpenClaw率先建立行业合规标准
开发语言