文章目录
前言
本文主要是介绍使用QT5基于QFileDialog类和QTextStream打开和读取文本文件并显示其内容。
一、运行效果
二、新建一个Qt工程
1.按Qt widget Application向导新建Qt新工程
按向导完成新工程的建立后,编辑mainwindow.ui文件,增加两个标签,一个QTextEedit,一个QLineEdit,一个QPushbutton。
三、修改mianwindow.h文件
在class MainWindow中添加私有函数on_pushButton_clicked(),用于响应QPushbutton按钮。
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
};
四、使用QTextCharFormat 设置显示文本的字体颜色、大小和字体
1. 在mianwindow.h文件添加头文件
#include <QTextCharFormat>
2. 将显示的文本设置为蓝色,微软雅黑 ,16号字体。
QTextCharFormat fmt;
fmt.setForeground(Qt::blue);
fmt.setFont(QFont("Microsoft YaHei",16));
ui->textEdit->setCurrentCharFormat(fmt);
五、使用QFileDialog 打开本地的文本文件
1. QFileDialog 类介绍
QFileDialog 类使用户能够遍历文件系统以选择一个或多个文件或目录。
具体介绍请查看官方资料
https://doc.qt.io/qt-5/qfiledialog.html#details
2. 添加QFileDialog 头文件
由于要用QFileDialog类,则需要在mianwindow.h文件添加头文件
#include <QFileDialog>
3. 打开文件的代码如下
选择文件对话框//
QFileDialog* f = new QFileDialog(this);
f->setWindowTitle("选择text文件*.txt");
f->setNameFilter("*.txt");
f->setViewMode(QFileDialog::Detail);
QString filePath;
if(f->exec() == QDialog::Accepted)
filePath = f->selectedFiles()[0];
ui->lineEdit->setText(filePath);
六、使用QTextStream 读取文本内容
1. QTextStream 类介绍
QTextStream 可以对 QIODevice、QByteArray 或 QString 进行操作。 使用 QTextStream 的流式操作符,您可以方便地读写单词、行和数字。 对于生成文本,QTextStream 支持字段填充和对齐的格式选项,以及数字的格式。
具体介绍请查看官方资料
https://doc.qt.io/qt-5/qtextstream.html#details
2. 添加QTextStream头文件
在mianwindow.h文件添加QTextStream头文件
#include <QTextStream>
3. 读取文本文件并显示在TextEdit框中
///读取并显示文件内容//
QFile file(filePath);
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
ui->textEdit->append("文件打开失败");
return;
}
else
{
QTextStream readStream(&file);
readStream.setCodec("UTF-8");//设置文件流编码方式
while(!readStream.atEnd())
{
ui->textEdit->append(readStream.readLine());
}
}
七、mianwindow.h和mianwindow.cpp的代码
1. mianwindow.h的代码
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QFileDialog>
#include <QTextStream>
#include <QTextCharFormat>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
2. mianwindow.cpp的代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
//设置显示文本的字体,默认是12号黑色宋体
QTextCharFormat fmt;
fmt.setForeground(Qt::blue);
fmt.setFont(QFont("Microsoft YaHei",16));
ui->textEdit->setCurrentCharFormat(fmt);
选择文件对话框//
QFileDialog* f = new QFileDialog(this);
f->setWindowTitle("选择text文件*.txt");
f->setNameFilter("*.txt");
f->setViewMode(QFileDialog::Detail);
QString filePath;
if(f->exec() == QDialog::Accepted)
filePath = f->selectedFiles()[0];
ui->lineEdit->setText(filePath);
///读取并显示文件内容//
QFile file(filePath);
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
ui->textEdit->append("文件打开失败");
return;
}
else
{
QTextStream readStream(&file);
readStream.setCodec("UTF-8");//设置文件流编码方式
while(!readStream.atEnd())
{
ui->textEdit->append(readStream.readLine());
}
}
}
这里需要注意一下,如果不使用UTF-8编码格式,读取txt文档的中文会是乱码。
readStream.setCodec("UTF-8");//设置文件流编码方式
总结
本文就使用QFileDialog类和QTextStream类做了简单的演示,方便有需要的朋友参考。
参考文章
[1]:https://blog.youkuaiyun.com/weixin_42837024/article/details/101457753
[2]:https://blog.youkuaiyun.com/qing666888/article/details/87873591