在对文件操作的时候,我们都知道QFile,那么QTextStream是干嘛用的呢?查询帮助文档我们可以知道,QTextStream 提供了一个快捷的接口来读写文件,可以提供相当多的格式,对齐方式。
那么怎么使用呢?比如说我们要实现下面的功能,点击“写入”就将上面的文字写入文件,点击“关闭”就将文件关闭,禁止写入。
来看头文件.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QtWidgets>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_inputBtn_clicked();
void on_clostBtn_clicked();
private:
Ui::MainWindow *ui;
QFile *m_file;
QTextStream *m_stream;
void init();
};
#endif // MAINWINDOW_H
看.cpp,重点看注释,重点都我都写在注释里了。
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_file = nullptr;
m_stream = nullptr;
init();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_inputBtn_clicked()
{
QString str = ui->plainTextEdit->toPlainText(); //去读界面上输入的文字
if(m_stream != nullptr)
{
*m_stream << str << "\r\n"; // 将数据写入到数据流中,注意是带*
m_stream->flush(); //将数据流中的数据写到文件,如果没有这一步,就不会马上写入到文件中。有了这一步就不用每次都打开与关闭文件了
}
}
void MainWindow::init()
{
QString filePath = qApp->applicationDirPath() + "/log.txt";
m_file = new QFile(filePath);
m_stream = new QTextStream(m_file); //用法
m_file->open(QIODevice::WriteOnly | QIODevice::Append); //只写 与 添加 打开
}
void MainWindow::on_clostBtn_clicked()
{
if(m_file != nullptr)
{
m_file->close();
delete m_file;
m_file = nullptr;
}
if(m_stream != nullptr)
{
delete m_stream;
m_stream = nullptr;
}
}
上面的demo可以下载:demo下载