QT写入文本文件

#include "intercalate.h"
#include <QMessageBox>
#include <QTextStream>
#include <QDebug>
#include <QtCore/QTextCodec>
InterCalate::InterCalate(QWidget *parent) : QWidget (parent){
setupUi(this);
QAction *select = new QAction(tr("确定"),this);
select->setSoftKeyRole(QAction::PositiveSoftKey);
this->addAction(select);
QAction *quet = new QAction(tr("取消"),this);
quet->setSoftKeyRole(QAction::NegativeSoftKey);
this->addAction(quet);
connect(select,SIGNAL(triggered(bool)),this,SLOT(writefile(bool)));
connect(quet,SIGNAL(triggered(bool)),this,SLOT(cancelpushBtn(bool)));
readfile();
}
InterCalate::~InterCalate(){


}
void InterCalate::readfile(){
#ifdef _DEBUG
QFile file1("c:\\sss.txt");
#else 
QFile file1("e:\\project\\sss.txt");
#endif
if(!file1.open(QFile::ReadWrite|QFile::Text)){
QMessageBox::warning(this,tr("open"),tr("open failed!"));
}
QTextCodec *code=QTextCodec::codecForName("GB2312");//
QTextStream stream(&file1);
stream.setCodec(code);
QString line = stream.readLine();
if(line == ",,"||line == ""){
nameLineEdit->setText("");
telLineEdit->setText("");
untieLineEdit->setText("");
}
else{
QList<QString> elems = line.split(",");
nameLineEdit->setText(elems.at(0));
telLineEdit->setText(elems.at(1));
untieLineEdit->setText(elems.at(2));
}
file1.close();
}
void InterCalate::writefile(bool chick){
if(!chick){
#ifdef _DEBUG
QFile file("c:\\sss.txt");
#else 
QFile file("e:\\project\\sss.txt");
#endif
if(!file.open(QFile::WriteOnly|QFile::Text|QFile::Truncate)){
QMessageBox::warning(this,tr("open"),tr("open failed!"));
}

QString str;
str.append(nameLineEdit->text());
str.append(",");
str.append(telLineEdit->text());
str.append(",");
str.append(untieLineEdit->text());
QTextCodec *code1=QTextCodec::codecForName("GB2312");//
QTextStream stream(&file);
stream.setCodec(code1);
stream<<str;
file.close();
this->hide();
}
}
void InterCalate::cancelpushBtn(bool chick){
if(!chick)
this->hide();
}
Qt 框架中,创建或写入文本文档主要依赖于 `QFile` 和 `QTextStream` 类的结合使用。Qt 提供了两种基本的文件读方式,一种是通过 `QFile` 类结合 `QIODevice` 的方法进行直接读,另一种是利用 `QTextStream` 以流的方式进行更高级别的文本处理[^2]。 ### 创建并写入新文件 使用 `QFile` 和 `QTextStream` 可以轻松创建一个新的文本文件并向其中写入内容。以下是一个典型的实现方式: ```cpp #include <QFile> #include <QTextStream> #include <QDebug> void createAndWriteFile() { // 创建一个 QFile 对象,指定文件路径 QFile file("example.txt"); // 以读和文本模式打开文件 if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { QTextStream out(&file); out << "这是写入文件的内容"; // 使用流方式写入文本 file.close(); // 关闭文件 qDebug() << "文件写入成功"; } else { qDebug() << "无法打开文件进行写入"; } } ``` 该方法会覆盖目标文件中已有的内容。如果需要保留原有内容并在末尾追加新内容,可以将打开模式改为 `QIODevice::Append`。 ### 追加内容到已有文件 若希望在已有文件的末尾追加内容而不删除原有数据,可以使用 `QIODevice::Append` 模式打开文件: ```cpp #include <QFile> #include <QTextStream> #include <QDebug> void appendToFile() { QFile file("example.txt"); if (file.open(QIODevice::Append | QIODevice::Text)) { QTextStream out(&file); out << "\n这是追加的内容"; // 添加换行符以区分原有内容 file.close(); qDebug() << "内容追加成功"; } else { qDebug() << "无法打开文件进行追加"; } } ``` 这种方式适用于日志文件或需要持续记录的场景。 ### 使用流方式写入的优势 通过 `QTextStream` 写入文本可以更方便地处理字符串拼接和格式化输出,同时支持自动编码转换。例如,可以使用 `setCodec()` 方法指定写入文件的字符编码(如 UTF-8): ```cpp out.setCodec("UTF-8"); ``` 这种方式增强了文件内容的可读性和跨平台兼容性。 ### 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值