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)");
}
相关推荐
iCxhust1 小时前
c# U盘映像生成工具
开发语言·单片机·c#
yangzhi_emo2 小时前
ES6笔记2
开发语言·前端·javascript
emplace_back3 小时前
C# 集合表达式和展开运算符 (..) 详解
开发语言·windows·c#
jz_ddk3 小时前
[学习] C语言数学库函数背后的故事:`double erf(double x)`
c语言·开发语言·学习
萧曵 丶3 小时前
Rust 所有权系统:深入浅出指南
开发语言·后端·rust
xiaolang_8616_wjl3 小时前
c++文字游戏_闯关打怪2.0(开源)
开发语言·c++·开源
收破烂的小熊猫~3 小时前
《Java修仙传:从凡胎到码帝》第四章:设计模式破万法
java·开发语言·设计模式
nananaij4 小时前
【Python进阶篇 面向对象程序设计(3) 继承】
开发语言·python·神经网络·pycharm
阿蒙Amon4 小时前
为什么 12 版仍封神?《C# 高级编程》:从.NET 5 到实战架构,进阶者绕不开的必修课
开发语言·c#