【QT】QFileDialog用法(选择文件弹出框)

简述
QFileDialog提供了一个对话框用于选择文件或目录。

QFileDialog让用户可以遍历文件系统目录来选择文件或目录。

使用
创建一个QFileDialog最简单的方式是使用静态函数。如下所示:

fileName = QFileDialog::getOpenFileName(this, tr("选择一张图片"), "C:/Users/jiage/Desktop", tr("Image Files (*.png *.jpg *.bmp)"));

在上面的例子中,我们使用QFileDialog的静态函数创建了一个模态对话框。该对话框初始状态会显示"/home"目录中的内容,并且只会展示那些与字符串"Image Files (*.png *.jpg *.bmp)“所确定的模式想匹配的文件。对话框的父亲被设为this,并且窗口标题为"选择一张图片”

项目示例

软件环境:QT

需求:

1,读取.dat文件并解析,将每个字节的值换行输出并且每行加上字节计数,输出txt文件

2,读取文件通过界面选择文件窗口来实现

3,选择的文件名称显示出来

4,输出的文件需要指定文件路径

ui界面如下:

 代码如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFile>
#include <QTextStream>
#include <QDebug>
#include <QFileDialog>
#include <QMessageBox>

void readAndWriteDatFile(const QString &inputFilePath, const QString &outputFilePath);
int i = 0;

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void readAndWriteDatFile(const QString &inputFilePath, const QString &outputFilePath) {
    QFile inputFile(inputFilePath);
    if (!inputFile.open(QIODevice::ReadOnly)) {
        qDebug()<<"无法打开输入文件:"<<inputFilePath;
        return;
    }

    QFile outputFile(outputFilePath);
    if (!outputFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
        qDebug() << "无法打开输出文件:" << outputFilePath;
        inputFile.close();
        return;
    }

    QTextStream out(&outputFile);

    while (!inputFile.atEnd()) {
        char byte;
        inputFile.read(&byte, 1);
        out << QString::number(i)<< "\t"<<static_cast<int>(static_cast<unsigned char>(byte)) << "\n"; // 将字节转换为10进制并换行
        i++;
    }

    inputFile.close();
    outputFile.close();
}

void MainWindow::on_pushButton_2_clicked()
{
    fileName = QFileDialog::getOpenFileName(
        this,
        tr("open a file."),
        "D:/",
        tr("text files(*.txt *.dat);;All files(*.*)"));
    if (fileName.isEmpty()) {
        QMessageBox::warning(this, "Warning!", "Failed to open the file!");
    }
    else {
        ui->lineEdit->setText(fileName);

    }
}


void MainWindow::on_pushButton_clicked()
{
    // QString inputPath = "D:/_PROJECT/2024/temp.dat";
    QString inputPath = fileName;

    QString outputPath = "D:/_PROJECT/2024/output.txt";

    readAndWriteDatFile(inputPath, outputPath);

}

注意:头文件的添加,注意qDebug()中冒号用中文可能会报错。

  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
您可以使用Qt的QFileDialog类来打开文件对话框,让用户选择需要打开的文件。一旦用户选择文件,您可以使用QMessageBox类创建一个消息来显示文件路径或其他信息。 下面是一个简单的示例代码,它演示了如何使用QFileDialog和QMessageBox来打开并显示用户选择文件路径: ```cpp #include <QApplication> #include <QFileDialog> #include <QMessageBox> int main(int argc, char *argv[]) { QApplication a(argc, argv); // 打开文件对话框 QString filePath = QFileDialog::getOpenFileName(nullptr, "Open File", "", "All Files (*.*)"); // 如果用户选择文件,显示消息 if (!filePath.isEmpty()) { QMessageBox::information(nullptr, "File Path", "Selected file path: " + filePath); } return a.exec(); } ``` 在这个示例中,我们使用getOpenFileName()方法来打开一个文件对话框,该方法需要四个参数: - parent:指定对话框的父对象,这里我们传入nullptr表示没有父对象。 - caption:指定对话框标题。 - dir:指定对话框打开时显示的目录。 - filter:指定对话框可以选择文件类型过滤器。 如果用户选择文件,getOpenFileName()方法将返回文件的完整路径,否则它将返回一个空字符串。 然后,我们使用QMessageBox::information()方法来创建一个信息,该方法需要三个参数: - parent:指定消息的父对象,这里我们传入nullptr表示没有父对象。 - title:指定消息的标题。 - text:指定消息显示的文本内容。 在这个示例中,我们将文件路径作为文本内容传递给消息。您可以根据自己的需求更改消息的标题和内容。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IIIIIII_II

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值