QT—文件选择对话框 QFileDialog

本文详细介绍了如何在Qt中使用QFileDialog进行文件的打开和保存操作,包括实例化对话框、设置模式和过滤器,以及获取用户选择的文件。还提供了使用getOpenFileName和getSaveFileName静态方法的示例。
摘要由CSDN通过智能技术生成

QT—文件选择对话框 QFileDialog

QFileDialog开发流程

使用 QFileDialog 的基本步骤通常如下:

实例化:首先,创建一个 QFileDialog 对象的实例。

QFileDialog dialog;

设置模式:根据需要设置对话框的模式,如打开文件、保存文件等。

dialog.setFileMode(QFileDialog::AnyFile);

设置过滤器:如果需要,可以设置文件类型过滤器,以限制用户可以选择的文件类型。

dialog.setNameFilter(tr("Images (*.png *.xpm *.jpg);;Text files (*.txt);;XMLfiles (*.xml)"));

显示对话框:通过调用 exec() 方法显示对话框,并在用户作出选择后执行相应的操作。

if (dialog.exec()) {
QStringList files = dialog.selectedFiles();
// 对用户选定的文件进行操作
}

通过 selectedFiles 方法获取用户选择的文件路径列表,然后对这些文件进行相应的处理。

这是使用 QFileDialog 的基本模式。Qt 也允许使用静态方法直接创建和显示对话框,例如QFileDialog::getOpenFileName() ,这些方法更简单,但提供的自定义选项较少。

QFileDialog 打开开发案例

#include <QApplication>
#include <QFileDialog>
#include <QStringList>
#include <QString>
#include <QMessageBox>

/*
fileName = QFileDialog::getOpenFileName(this, tr("Open File"), "",
tr("Text Files (*.txt);;All Files
(*)"));
*/
int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    // 创建一个 QFileDialog 实例
    QFileDialog dialog;
    // 设置对话框为打开文件模式
    dialog.setFileMode(QFileDialog::ExistingFiles);
    // 设置文件过滤器
    dialog.setNameFilter("Text files (*.txt);;Images (*.png *.jpg);;All files
                         (*)");
                         // 显示对话框
                         if (dialog.exec()) {
                             // 获取用户选中的文件列表
                             QStringList fileNames = dialog.selectedFiles();
                             // 遍历列表并处理每个文件
                             for (const QString &fileName : fileNames) {
                                 // 此处可以添加对 fileName 的处理代码
                                 QMessageBox::information(nullptr, "File Selected", fileName);
                             }
                         }
                         return app.exec();
                         }
void Widget::on_btnse_clicked()
{
    QFileDialog qFileDialog;
    qFileDialog.setFileMode(QFileDialog::ExistingFiles);
    qFileDialog.setNameFilter("*.txt");
    qFileDialog.exec();
    QStringList qstrings=qFileDialog.selectedFiles();
    for(QString str : qstrings)
    {
        qDebug()<<str;
    }
}

QFileDialog 保存开发案例

void Widget::on_btnSave_clicked()
{
    QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
                                                    "D:/QT/untitled.txt",
                                                    tr("Text (*.txt *.doc)"));
    qDebug()<<fileName;
    QFile file;
    file.setFileName(fileName);
    if(!file.open(QIODevice::WriteOnly | QIODevice::Text)){
        qDebug() << "file open error";
    }
    QTextStream out(&file);
    out.setCodec("UTF-8");
    out << "Qdialog Write Data to the Txt File";
    file.close();
}
void Widget::on_btnSave_clicked()
{
    QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
                               "F:/Qt/untitled.txt",
                               tr("Text (*.txt *.doc)"));
    qDebug()<<fileName;
    QFile  file(fileName);
    if(!file.open(QIODevice::WriteOnly|QIODevice::Text))
    {
        qDebug()<<"file open error";
    }

    QTextStream  out(&file);
    out.setCodec("UTF-8");
    out << "Qdialog write Data to the Txt  file";
    file.close();
}
  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值