您当前的位置: 首页 >  qt

MangataTS

暂无认证

  • 3浏览

    0关注

    423博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

基于QT5的文件读取程序

MangataTS 发布时间:2022-05-13 20:59:57 ,浏览量:3

文章目录
    • 一、文件读写操作QFile
      • 1.1 头文件
      • 1.2 内部函数
    • 二、UI设计
    • 三、代码
      • 3.1 mainwindow.h
      • 3.2 mainwindow.c
    • 四、效果

一、文件读写操作QFile

QT自带了一个文件操作的类->QFile ,实验中也是着重 QFile 的操作

1.1 头文件

#include

1.2 内部函数

在这里插入图片描述

这些函数没必要都去记住,我们只需要记住简单的例如open()readLine()atEnd()close() 等常用的函数即可

  • 首先我们new 一个 QFile 对象的时候有四种构造方法,通常来说我们传入 文件的路径名 就好了
  • 然后我们要调用open()函数,这个函数是告诉操作系统我们通过什么样的方式打开,例如只读打开、只写打开、可读可写打开……,这个和我们在C语言中的文件打开函数是类似的,我们在QIODevice看到一个枚举类型的 OpenModeFlag打开方式
enum OpenModeFlag {
        NotOpen = 0x0000,
        ReadOnly = 0x0001,
        WriteOnly = 0x0002,
        ReadWrite = ReadOnly | WriteOnly,
        Append = 0x0004,
        Truncate = 0x0008,
        Text = 0x0010,
        Unbuffered = 0x0020,
        NewOnly = 0x0040,
        ExistingOnly = 0x0080
    };

这些就是文件打开的一些模式了,可以根据自己的需求选用,我们这里既然是文件的读取显示操作,那么只需要读取,于是我们的打开方式就是:QIODevice::ReadOnly

  • 然后就是对这个文件从头到尾读取,在以前我们学的C语言中有一个文件结束标志EOF,一般这个EOF是 − 1 -1 −1 但是这里的QFile 提供了一个函数atEnd()如果当我们读到了文件末尾,那么就会返回一个true

例如:

QFile file("in.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
    return;

while (!file.atEnd()) {
    QByteArray line = file.readLine();
    process_line(line);
}
  • 最后我们通过file.close()关闭数据流就好了
二、UI设计

这里随便画画就好了,不过可以在文本显示框插入背景图,只需要在组件的styleSheet中添加资源即可

在这里插入图片描述

在这里插入图片描述

mainwindow.ui



 MainWindow
 
  
   
    0
    0
    300
    500
   
  
  
   MainWindow
  
  
   false
  
  
   
  
  
   
    true
   
   
    
   
   
    
     
      
       
        
         
          文件路径
         
        
       
       
        
         
          打开文件
         
        
       
      
     
    
    
     
      
       
      
      
       文本内容:
      
      
       
        
         
          background-image: url(:/a/tmp/back.png);
background-color: rgba(0, 0, 0, 12);
         
        
       
      
     
    
   
  
  
   
    
     0
     0
     300
     23
    
   
  
  
 
 
 


三、代码 3.1 mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include 

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

3.2 mainwindow.c
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include 
#include 
#include 
#include 
#include 
#include 
#include 

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

    //使用connec函数,熟悉匿名表达式
    connect(ui->pushButton,&QPushButton::clicked,[=](){
       //点击按钮,弹出文件选择对话框
       //使用对话框,获取打开路径,注意参数一是父类对象 ,参数二是对话窗口名称 参数三是默认打开路径
       QString fileName = QFileDialog::getOpenFileName(this,
              tr("Open File"), "C:\\data");
       //使路径显示到路径 line edit地方
       ui->label->setText(fileName);
       //调试的跟踪打印
       qDebug()setText(array);
       //关闭文件数据流
       file.close();
       //编码格式类
       //QTextCodec * codec = QTextCodec::codecForName("gbk");
       QFileInfo info(fileName);
       qDebug()             
关注
打赏
1665836431
查看更多评论
0.0390s