图片展示网站php源码,河北企业建站系统信息,网站建设月薪,百度霸屏培训Qt creator 6.80 MinGw 64bit
文本文件是指以纯文本格式存储的文件#xff0c;如cpp和hpp文件。XML文件和JSON文件也是文本文件#xff0c;只是使用了特定的标记符号定义文本的含义#xff0c;读取这种文本文件需要先对内容解析再显示。 qt提供了两种读写文本文件的方法。…Qt creator 6.80 MinGw 64bit
文本文件是指以纯文本格式存储的文件如cpp和hpp文件。XML文件和JSON文件也是文本文件只是使用了特定的标记符号定义文本的含义读取这种文本文件需要先对内容解析再显示。 qt提供了两种读写文本文件的方法。
一种是QFile,另一种是QTextStream。
下面介绍这两种方法的使用。
软件界面设计如下 软件运行界面 程序结构如下 main.cpp
#include mainwindow.h#include QApplicationint main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}mainwindow.hpp和mainwindow.cpp代码
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include QMainWindowQT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent nullptr);~MainWindow();private slots:void on_actOpenFile_triggered();void on_actQFileSave_triggered();void on_actQSaveFileSave_triggered();void on_actOpenStream_triggered();void on_actQTextStreamSave_triggered();private:QString getFileName(bool savefalse);
private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
/***********************************************mainwindow.cpp****************************/
#include mainwindow.h
#include ui_mainwindow.h
#includeQDir
#includeQFileDialog
#includeQSaveFile
#includeQException
#includeQTextDocument
#includeQTextBlock
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui-setupUi(this);setCentralWidget(ui-tabWidget);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_actOpenFile_triggered()
{QString aFileName;aFileNamegetFileName(false);QFile aFile(aFileName);if(!aFile.exists()) return ;if(!aFile.open(QIODevice::ReadOnly|QIODevice::Text))return ;QByteArray allLinesaFile.readAll();QString text(allLines);ui-textEditDevice-setPlainText(text);aFile.close();ui-tabWidget-setCurrentIndex(0);
}QString MainWindow::getFileName(bool save)
{QString curPathQDir::currentPath();QString dlgTitle打开一个文件;QString filter程序文件(*.cpp *.h);;文本文件(*.txt);;所有文件(*.*);QString aFileName;if(save)aFileNameQFileDialog::getSaveFileName(this,dlgTitle,curPath,filter);elseaFileNameQFileDialog::getOpenFileName(this,dlgTitle,curPath,filter);if(aFileName.isEmpty()) return aFileName;QFileInfo fileInfo(aFileName);QDir::setCurrent(fileInfo.absoluteFilePath());return aFileName;
}
void MainWindow::on_actQFileSave_triggered()
{QString aFileNamegetFileName(true);if(aFileName.isEmpty()) return;QFile aFile(aFileName);if(!aFile.open(QIODevice::WriteOnly|QIODevice::Text)){return ;}QString strui-textEditDevice-toPlainText();QByteArray strBytesstr.toUtf8();aFile.write(strBytes,strBytes.length());aFile.close();ui-tabWidget-setCurrentWidget(0);
}
void MainWindow::on_actQSaveFileSave_triggered()
{QString aFileNamegetFileName(true);QSaveFile aFile(aFileName);if(!aFile.open(QIODevice::WriteOnly|QIODevice::Text)){return ;}aFile.setDirectWriteFallback(false);//使用临时文件try{QString strui-textEditDevice-toPlainText();QByteArray strBytesstr.toUtf8();aFile.write(strBytes,strBytes.length());aFile.commit();ui-tabWidget-setCurrentIndex(0);}catch (QException e){qDebug(保存文件过程发生错误);aFile.cancelWriting();}
}
void MainWindow::on_actOpenStream_triggered()
{QString aFileNamegetFileName(false);QFile aFile(aFileName);if(!aFile.exists()) return ;if(!aFile.open(QIODevice::ReadOnly|QIODevice::Text))return ;QTextStream aStream(aFile);aStream.setAutoDetectUnicode(true);QString straStream.readAll();ui-textEditStream-appendPlainText(str);aFile.close();
}
void MainWindow::on_actQTextStreamSave_triggered()
{QString aFileNamegetFileName(true);QSaveFile aFile(aFileName);if(!aFile.open(QIODevice::WriteOnly|QIODevice::Text))return ;aFile.setDirectWriteFallback(false);try{QTextStream aStream(aFile);aStream.setAutoDetectUnicode(true); //写入临时文件QTextDocument *docui-textEditStream-document();int cntui-textEditStream-blockCount();for(int i0;icnt;i){QTextBlock textLinedoc-findBlockByLineNumber(i);QString strtextLine.text();aStreamstr\n;}aFile.commit();}catch(QException e){qDebug(保存文件过程发生错误);aFile.cancelWriting();}
}