Qt文件对话框QFileDialog

背景

在写客户端的时候经常会遇到打开或保存文件的需求,这时候需要弹出文件对话框让用户进行选择。Qt提供了QFileDialog控件来显示文件对话框,可以使用静态函数或者创建QFileDialog对象来实现该功能,具体使用如下:

保存文件对话框

[static] QString QFileDialog::getSaveFileName(QWidget *parent = Q_NULLPTR,
const QString &caption = QString(),
const QString &dir = QString(),
const QString &filter = QString(),
QString *selectedFilter = Q_NULLPTR,
Options options = Options());

getSaveFileName:该函数为一个静态函数,弹出一个模态的文件保存框,如果父窗口为空,则显示在桌面中央,该函数可以很方便的获得用户要保存的完整文件名。
parent :指定对话框的父窗口。
caption :设置文件保存框的标题。
dir :设置文件保存框默认的打开路径,若该路径包含文件名,则默认选中该文件(该文件名显示在保存框的下方)。
filter :设置文件过滤器,设置保存框显示的文件类型,若有多个类型用;;隔开。例如:".png;;.jpg;;*.*"。
selectedFilter :获得保存的文件类型,确认保存selectedFiltr值为文件类型,取消则为空。
options :保存对话框的一些配置。
返回值:保存文件的路径(包含文件名)。

    QString filter;
    //系统得用户目录
    QString fileName = QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + "/123.mp3";
    QString saveFile = QFileDialog::getSaveFileName(this, "0.0", fileName,
        "*.cpp;;*.png;;*.jpg;;*.*", &filter);

     QFileDialog saveDialog;
     //设置对话框打开的模式,是打开文件还是保存文件
     saveDialog.setAcceptMode(QFileDialog::AcceptSave);
     //设置对话框的标题
     saveDialog.setWindowTitle("0.0");
     //设置对话框的打开路径(只是路径,加上文件名失效)
     saveDialog.setDirectory(QStandardPaths::writableLocation(QStandardPaths::HomeLocation));
     //设置对话框默认显示文件名
     saveDialog.selectFile("123");
     //设置文件过滤器
     saveDialog.setNameFilter("*.cpp;;*.png;;*.jpg;;*.*");
     //设置默认选中文件保存类型
     saveDialog.selectNameFilter("*.png");

     if (saveDialog.exec() == QFileDialog::AcceptSave) {
         //保存文件的路径(包含文件名)
        QString saveFile = saveDialog.selectedFiles().first();
        //保存文件的路径
        QString savePath = saveDialog.directory().path();
        //获得文件过滤器类型
        QString filter = saveDialog.selectedNameFilter();
     }

选择文件对话框

[static] QString QFileDialog::getOpenFileName(QWidget parent = Q_NULLPTR,
const QString &caption = QString(),
const QString &dir = QString(),
const QString &filter = QString(),
QString selectedFilter = Q_NULLPTR,
Options options = Options());
getOpenFileName:该函数为一个静态函数,弹出一个模态的文件选择框,如果父窗口为空,则显示在桌面中央,该可以很方便的获得用户选择的完整文件名,如果取消则返回空。参数意义与
getSaveFileName
一致。

    QString filter;
    //应用程序所在目录
    QString fileName = QApplication::applicationDirPath() + "/main.obj";
    //打开多个文件使用getOpenFileNames
    QString openFile = QFileDialog::getOpenFileName(this, "0.0", fileName, "*.*", &filter);

    QFileDialog openDialog;
    //设置对话框打开的模式
    openDialog.setAcceptMode(QFileDialog::AcceptOpen);
    //设置对话框的标题
    openDialog.setWindowTitle("0.0");
    //设置对话框的打开路径(只是路径,加上文件名失效)
    openDialog.setDirectory(QApplication::applicationDirPath());
    //设置对话框默认选中文件名
    openDialog.selectFile("/main.obj");
    //设置对话框文件过滤器
    openDialog.setNameFilter("*.cpp;;*.png;;*.jpg;;*.*");
    //设置文件模式,例如:已存在未存在都可选择,只能选中已存在文件,同时选中多个文件等
    openDialog.setFileMode(QFileDialog::ExistingFile);
    if (openDialog.exec() == QFileDialog::AcceptSave) {
        //打开文件的路径(包含文件名)
       QString openFile = openDialog.selectedFiles().first();
       //打开文件的路径
       QString openPath = openDialog.directory().path();
       //获得文件过滤器得类型
       QString filter = openDialog.selectedNameFilter();
    }
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值