标签:style blog http io ar color 使用 sp 文件
该程序实现如下功能:1.打开TXT文件A.txt;2.将文件路径显示到一个文本编辑框里面,文件内容显示到一个文本域里面;3.在文本域里面更改文件内容之后,保存文本域的内容到当前文件路径下。
定义了一FileRead类,继承于QMainWindow,该类下定义了两个槽:打开文件openFileButton_Clicked和保存文件saveFileButton_Clicked;两个私有函数initSlots和saveFile。类定义如下:
#ifndef FILEREADER_H #define FILEREADER_H
#include <QtWidgets/QMainWindow> #include "ui_filereader.h" #include <QString> #include <QFileDialog> #include <QTextCodec> #include <QFile> #include <QMessageBox> #include <QTextStream>
class FileReader : public QMainWindow { Q_OBJECT
public: FileReader(QWidget *parent = 0); ~FileReader();
private: void initSlots(); bool saveFile(QString strFileName); // 保À¡ê存ä?文?件t
private slots: void openFileButton_Clicked(); void saveFileButton_Clicked();
private: Ui::FileReaderClass ui; //QString fileName; };
#endif // FILEREADER_H |
下面就具体介绍槽和私有函数的实现和思路。
void FileReader::openFileButton_Clicked() { // 从一个打开窗口获取文件名 QString fileName = QFileDialog::getOpenFileName(this, QStringLiteral("打䨰开a文?件t"), "", tr("Text Files (*.txt)")); if(!fileName.isEmpty()) { ui.pathLineEdit->setText(fileName); // 打䨰开a文?件t QFile file(fileName); if (!file.open(QFile::ReadOnly | QFile::Text)) { QMessageBox::warning(this, tr("FileReader"), QStringLiteral("不?能¨¹打䨰开a文?件t %1:\n%2.") .arg(fileName) .arg(file.errorString())); return; } // 通ª¡§过y文?件t流¢¡Â把ã?文?件t中D的Ì?内¨²容¨Y返¤¦Ì埴¨²到Ì?fileEdit中D去¨£¤ QTextStream in(&file); #ifndef QT_NO_CURSOR QApplication::setOverrideCursor(Qt::WaitCursor); #endif ui.fileEdit->setPlainText(in.readAll()); #ifndef QT_NO_CURSOR QApplication::restoreOverrideCursor(); #endif } } |
void FileReader::saveFileButton_Clicked() { bool bTag; //判D断?当Ì¡À前¡ã是º?否¤?为a已°?经-打䨰开a的Ì?文?件t QString fileName = ui.pathLineEdit->text(); if(fileName.isEmpty())// 不?是º?已°?打䨰开a的Ì?文?件t { fileName = QFileDialog::getSaveFileName(this, QStringLiteral("保À¡ê存ä?"), ".", tr("Text File (*.txt)")); bTag = saveFile(fileName); } else { bTag = saveFile(fileName); } // 保À¡ê存ä?失º¡ì败㨹 if(!bTag) { QMessageBox::warning(this, tr("FileReader"), QStringLiteral("文?件t保À¡ê存ä?失º¡ì败㨹!ê?"), QMessageBox::Yes); } } |
bool FileReader::saveFile(QString strFileName) // 保À¡ê存ä?文?件t { // 以°?写¡ä的Ì?方¤?式º?打䨰开a文?件t QFile file(strFileName); if (!file.open(QFile::WriteOnly | QFile::Text)) { QMessageBox::warning(this, tr("FileReader"), tr("不?能¨¹打䨰开a文?件t %1:\n%2.") .arg(strFileName) .arg(file.errorString())); return false; } // 通ª¡§过y文?件t把ã?textBwsr中D的Ì?内¨²容¨Y保À¡ê存ä?到Ì?文?件t中D去¨£¤ QTextStream out(&file); #ifndef QT_NO_CURSOR QApplication::setOverrideCursor(Qt::WaitCursor); #endif out << ui.fileEdit->toPlainText(); #ifndef QT_NO_CURSOR QApplication::restoreOverrideCursor(); #endif return true; } |
void FileReader::initSlots() { // 当Ì¡À单Ì£¤击¡Â【?打䨰开a】?按ã¡ä钮£¤时º¡À触䣤发¤¡é的Ì?信?号?与®?槽?的Ì?连¢?接¨® connect(ui.openFileButton, SIGNAL(clicked()), this, SLOT(openFileButton_Clicked())); // 当Ì¡À单Ì£¤击¡Â【?保À¡ê存ä?】?按ã¡ä钮£¤时º¡À触䣤发¤¡é的Ì?信?号?与®?槽?的Ì?连¢?接¨® connect(ui.saveFileButton, SIGNAL(clicked()), this, SLOT(saveFileButton_Clicked())); } |
FileReader::FileReader(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this);
// 设¦¨¨置?标À¨º题¬a,ê?QStringLiteral可¨¦以°?处ä|理¤¨ª中D文?乱¨°码? this->setWindowTitle(QStringLiteral("TXT文?件t读¨¢写¡ä"));
initSlots(); } |
该程序调试成功后,具体的操作如下流程图所示:
通过程序练习,感觉自己掌握了一下内容:
1.QTextStream如何打开文件,保存文件,显示文件;
2.QTextEdit,QLineEdit显示文本;
3.QMessageBox告警框的显示;
4.简单的信号和槽机制的搭配使用。
精彩代码分析:
标签:style blog http io ar color 使用 sp 文件
原文地址:http://www.cnblogs.com/colinvsyolanda/p/4115316.html