QT选择打开*.csv/*.txt/*.jpg文件

  • 环境介绍

        系统:Win10 64位

        Qt版本:Qt5.12.7

        编译器:Qt5.12.7  MinGW

  • 说明

可选择打开*.csv、*.txt、*.jpg格式文件,图片文件和文本文件可分别在label控件和textEdit控件

打开文件后效果:

实现步骤

1.Qt Creator 设计窗口添加一个Push Button控件,名称“打开文件”

2.添加Label控件用于显示图片文件

3.添加Text Edit控件用于显示文本文件

4.Push Button控件添加槽函数

5.实现代码

mainwindow.h

private slots:
    void on_pushButton_3_clicked();//打开文件按钮槽函数
    void openCsv(const QString &fileName1);//打开csv文件
    void openImage(const QString &fileName1);//打开图片文件
    void openTxt(const QString &fileName1);//打开txt文件

mainwindow.cpp

#include <QFileDialog>
#include <QMessageBox>
#include <QFile>
#include <QDebug>
//打开文件按钮槽函数
void MainWindow::on_pushButton_3_clicked()
{
    //获取文件路径
    QString fileName = QFileDialog::getOpenFileName(this,
                                                    tr("Excel file"),
                                                    "./",
                                                    tr("Files (*.csv);;文本(*.txt);;图片(*.jpg *.bmp *.png)"));
    if(!fileName.isEmpty())
    {
    //获取文件相关信息
    QFileInfo info(fileName);  
    QString  file_suffix = info.suffix();//获取文件后缀
    //qDebug()<<"file_suffix="<<file_suffix;

    //判断文件类型后打开
    QStringList stringList;
    stringList << "csv" << "txt"<<"jpg";
    //0:csv 1:txt 2:jpg
    switch (stringList.indexOf(file_suffix))
      {
         case 0:
           qDebug()<<"格式=csv";
           openCsv(fileName);
           break;
         case 1:
           qDebug()<<"格式=txt";
           openTxt(fileName);
           break;
         case 2:
           qDebug()<<"格式=jpg";
           openImage(fileName);
           break;
      }
    }
}
//打开*.csv文件
void MainWindow::openCsv(const QString &fileName1)
{
    QVector<double> x;
    QVector<double> y;
    x.clear(); //x的值
    y.clear();  //y的值

    QFile file(fileName1); // 新建QFile对象

    if (!file.open(QFile::ReadOnly | QFile::Text))
    {
        QMessageBox::warning(this, tr("打开csv文件"),
                             tr("无法读取文件 %1:\n%2.")
                             .arg(fileName1).arg(file.errorString()));
        return ;
    }
    QTextStream in(&file); // 新建文本流对象
    QStringList list;//用于存储逐行数据

    //逐行读取*.csv数据并将每列分别存入x、y数组中
    while(!in.atEnd())
    {
        QString fileLine=in.readLine();//逐行读取数据
        list=fileLine.split(",");//一行中的单元格以,区分
        qDebug()<<"list="<<list;

        double A = (list.at(0)).toDouble();//获取该行第1个单元格内容
        x.append(A);

        double B = (list.at(1)).toDouble();//获取该行第2个单元格内容
        y.append(B);
    }
    qDebug()<<"x="<<x;
    qDebug()<<"y="<<y;

    file.close();
}
//打开图片(*.jpg)
void MainWindow::openImage(const QString &fileName1)
{
    ui->label->clear();//先清除label内容
    QImage img(fileName1);
    if(!img.isNull())
     {
       //Qt::KeepAspectRatio自适应大小,不变形
       img=img.scaled(ui->label->width(),ui->label->height(),Qt::KeepAspectRatio);
       ui->label->setPixmap(QPixmap::fromImage(img));
    }
}
//打开*.txt
void MainWindow::openTxt(const QString &fileName1)
{
    QFile file(fileName1); // 新建QFile对象

    if (!file.open(QFile::ReadOnly | QFile::Text))
    {
        QMessageBox::warning(this, tr("打开txt文件"),
                             tr("无法读取文件 %1:\n%2.")
                             .arg(fileName1).arg(file.errorString()));
        return ;
    }
    QTextStream in(&file); // 新建文本流对象
    ui->textEdit->setPlainText(in.readAll());
}

源码下载地址 

https://download.csdn.net/download/mokemg/12346992

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值