Qt中文件读写类简述
包含头文件#include <QFile>
读写模式如下 枚举
文件读写步骤
1 先使用string 类型来接受打开文件的返回值
QFileDialog::getOpenFileName(this,"文件","./"); //打开一个文件
2 构建文件对象
Qfile ff (qstring)接受打开文件的返回值
打开文件读写模式 只读 只写等等
最后记得关闭文件
文件读写代码展示
connect(ui->filebutton,&QPushButton::clicked,this,[this](){
QString abc = QFileDialog::getOpenFileName(this,"文件","./");
ui->lineEdit->setText(abc);
//textedit 中读取文件
QFile ff(abc);//构建文件对象
if(!ff.open(QIODevice::ReadOnly)) return ;//文件打开失败
while(!ff.atEnd())
{
char str[1020]={0};
ff.readLine(str,sizeof str
);
ui->textEdit->append(str);//一行一行添加
}
ff.close();
});
文件保存:
QFileDialog::getSaveFileName(this,"另存为","./aabc.txt");//保存文件
//保存二进制
void MainWindow::on_bin_clicked()
{
//第四个参数过滤掉其他bin文件
QString filename = QFileDialog::getOpenFileName(this,"dk","./we.bin","*.bin");
QFile ff(filename);
if(!ff.open(QIODevice::WriteOnly)) return;
//创建数据流对象
//传入文件对象指针
QDataStream fou(&ff);
fou<<122;//重载了<< 类似cout 输出
fou<<"sss";
ff.close();
}
void MainWindow::on_zz_clicked()
{
QString name = QFileDialog::getSaveFileName(this,"duq","./","*.bin");
QFile ff(name);
if(ff.open(QIODevice::ReadOnly)) return ;
QDataStream kou(&ff);
int num;
QString str; //读取后放到num 和str中
kou>>num;
kou>>str;
qDebug()<<num<<str;
ff.close();
}
QT中文件配置文件相关操作
比如一个滑动条和一个label 当我下次运行该程序时仍为我上一次操作的值
QSettings ste("config.ini"); 配置文件
void MainWindow::on_horizontalSlider_valueChanged(int value)
{
ui->label->setText("当前音量"+ QString::number(value)+"%");
//创建配置文件对象
QSettings ste("config.ini");
//保存变量到配置文件中
ste.setValue("volume",value);
}
ste.setValue("volume",value); 将值送入volume中
读取配置文件
//读取配置文件
QSettings sett("config.ini");
ui->horizontalSlider->setValue(sett.value("volume").toInt());//拿到配置文件中的值
关闭后再次运行 仍为41
使用Qt实现一个简要的文本编辑器 1 可以打开文件显示到编辑器中 2 可编辑文件内容 保存文件 无需快捷保存 3可以另存为新的文件 分文件编写
.h文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTextEdit>
#include <QFileDialog>
#include <QFile>
#include <QTextStream>
#include <QAction>
#include <QMenuBar>
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 onOpenFile();
void onSaveFile();
void onSaveAsFile();
private:
Ui::MainWindow *ui;
QString currentFilePath;
QTextEdit *editor;
};
#endif // MAINWINDOW_H
.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 设置中央部件为文本编辑器
editor = new QTextEdit(this);
setCentralWidget(editor);
// 创建菜单栏
QMenuBar *menuBar = new QMenuBar(this);
setMenuBar(menuBar);
// 创建文件菜单
QMenu *fileMenu = menuBar->addMenu(tr("&File"));
// 创建打开文件动作
QAction *openAction = new QAction(tr("&Open"), this);
fileMenu->addAction(openAction);
connect(openAction, &QAction::triggered, this, &MainWindow::onOpenFile);
// 创建保存文件动作
QAction *saveAction = new QAction(tr("&Save"), this);
fileMenu->addAction(saveAction);
connect(saveAction, &QAction::triggered, this, &MainWindow::onSaveFile);
// 创建另存为文件动作
QAction *saveAsAction = new QAction(tr("Save &As..."), this);
fileMenu->addAction(saveAsAction);
connect(saveAsAction, &QAction::triggered, this, &MainWindow::onSaveAsFile);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::onOpenFile()
{
// 打开文件对话框
QString filePath = QFileDialog::getOpenFileName(this, tr("Open File"), "", tr("Text Files (*.txt);;All Files (*)"));
if (!filePath.isEmpty()) {
QFile file(filePath);
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
QTextStream in(&file);
editor->setText(in.readAll());
file.close();
currentFilePath = filePath;
}
}
}
void MainWindow::onSaveFile()
{
if (currentFilePath.isEmpty()) {
onSaveAsFile();
} else {
QFile file(currentFilePath);
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream out(&file);
out << editor->toPlainText();
file.close();
}
}
}
void MainWindow::onSaveAsFile()
{
QString filePath = QFileDialog::getSaveFileName(this, tr("Save File As"), "", tr("Text Files (*.txt);;All Files (*)"));
if (!filePath.isEmpty()) {
QFile file(filePath);
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream out(&file);
out << editor->toPlainText();
file.close();
currentFilePath = filePath;
}
}
}
主函数
#include <QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}