QFileDialog文件选择对话框

QFileDialog 类是 Qt 框架中用于处理文件对话框的一个类,它继承自 QDialogQFileDialog 提供了标准的文件选择对话框,使用户能够选择文件或目录。这个类可以用于打开或保存文件,也可以用来选择目录。

主要功能

  • 打开和保存文件QFileDialog 提供了调用标准打开文件对话框和保存文件对话框的方法,使用户可以浏览文件系统,并且选择需要打开或保存的文件。
  • 目录选择:除了文件选择,QFileDialog 还能够用于选择文件夹,对于需要用户指定工作目录等场景非常有用。
  • 过滤器:可以设置文件类型过滤器,仅显示对话框中符合特定模式的文件或目录,提高了用户体验。
  • 视图模式:支持不同的文件视图模式和排序方式,用户可以根据需要调整。

主要方法

  • getOpenFileName()getOpenFileNames():弹出对话框让用户选择一个或多个要打开的文件。
  • getSaveFileName():弹出对话框让用户选择要保存文件的路径和文件名。
  • getExistingDirectory():弹出对话框让用户选择一个目录。
  • setNameFilter():设置对话框显示的文件过滤器,例如仅显示特定扩展名的文件。
  • setViewMode():设置在对话框中文件的显示方式,如列表或详细列表。

示例代码

#include <QFileDialog>
#include <QDebug>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    
    // 打开文件对话框选择一个文件
    QString fileName = QFileDialog::getOpenFileName(nullptr, 
                        "Open Image", "/home/user", 
                        "Image Files (*.png *.jpg *.bmp)");
    qDebug() << "Selected file:" << fileName;
    
    // 打开对话框选择一个保存文件的位置
    QString saveFileName = QFileDialog::getSaveFileName(nullptr, 
                            "Save File", "/home/user",
                            "Text Files (*.txt)");
    qDebug() << "Save file path:" << saveFileName;

    return app.exec();
}

这个示例演示了如何使用 QFileDialog 弹出打开文件和保存文件的对话框,以及如何应用文件类型过滤器。

示例代码myself

//简单粗暴用getOpenFileName操作文件选择对话框
void Widget::on_btnFileDialog_clicked()
{
    //选择需要打开的文件和文件的类型。弹出一个框(单个)
    QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
                                                     "D:/c++QT/lessonDemo/noteBookProject",
                                                     tr("Text files (*.txt *.doc)"));

    qDebug()  <<fileName;

    //打开文本文件
    QFile file(fileName);
    if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
        qDebug()<<"open error";

    }

    //读取
    QTextStream in(&file);
    in.setCodec("UTF-8");

    //QString context = in.read(file.size());方法一:按照大小整个读
    //方法二:如果没到尾部,一行一行的读。
    while(!in.atEnd()){
        QString context = in.readLine();
        qDebug() << context;
        qDebug() << "=============";
        //std::cout <<"=========="<<std::endl;
    }

    //关闭
    file.close();
}

//分步骤操作文件选择对话框
void Widget::on_btnFDStep_clicked()
{

    QFileDialog dialog;
    //打开已经存在的所有文件
    dialog.setFileMode(QFileDialog::ExistingFiles);
    dialog.setNameFilter("*.txt");

    dialog.exec();

    //选择多个文件,遍历出来(数组)
    QStringList qstrings = dialog.selectedFiles();
    for(QString str : qstrings){
        qDebug() << str;

    }
}

//另存为文件。和写入文件一个逻辑
void Widget::on_btnSave_clicked()
{
    QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
                               "D:/c++QT/lessonDemo/noteBookProject/untitled.txt",
                               tr("Text (*.txt)"));
    qDebug()<< fileName;

    //写入文件
    QFile file(fileName);
    if(!file.open(QIODevice::WriteOnly | QIODevice::Text)){
        qDebug()<<"open error";

    }

    QTextStream out(&file);
    out.setCodec("UTF-8");

    out << "QDialog Write" ;

    file.close();
}

打开单个文件
在这里插入图片描述
打开多个文件,数组遍历

在这里插入图片描述
另存为文件
在这里插入图片描述

结论

QFileDialog 是 Qt 中一个非常方便的工具,它使得与用户互动选择文件或目录的任务变得既标准化又简单。通过预定义的静态方法可以快速弹出对话框,并根据用户选择返回所需的文件路径或者目录,极大地简化了文件选择相关的编码工作。

  • 27
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值