通用代码准备
QString MyMainWindow::openFile()
{
QString curPath = QDir::currentPath();
QString dlgTitle = "打开一个文件";
QString filter = "程序文件(*.h *.cpp);;文本文件(*.txt);;所有文件(*.*)";
QString fileName = QFileDialog::getOpenFileName(this, dlgTitle, curPath, filter);
if (fileName.isEmpty())
return NULL;
return fileName;
}
QString MyMainWindow::saveFile()
{
QString curPath = QDir::currentPath();
QString dlgTitle = "打开一个文件";
QString filter = "程序文件(*.h *.cpp);;文本文件(*.txt);;所有文件(*.*)";
QString fileName = QFileDialog::getSaveFileName(this, dlgTitle, curPath, filter);
if (fileName.isEmpty())
return NULL;
return fileName;
}
方式一:以 Stream 方式读取、写入
bool MyMainWindow::openTextByTextStream(const QString &fileName)
{
QFile file(fileName);
if (!file.exists())
return false;
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return false;
QTextStream stream(&file);
stream.setAutoDetectUnicode(true);
ui->plainTextEdit->clear();
while (!stream.atEnd()) {
ui->plainTextEdit->appendPlainText(stream.readLine());
}
file.close();
ui->tabWidget->setCurrentIndex(1);
return true;
}
bool MyMainWindow::saveTextByTextStream(const QString &fileName)
{
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return false;
QTextStream stream(&file);
stream.setAutoDetectUnicode(true);
QString str = ui->plainTextEdit->toPlainText();
stream << str;
file.close();
return true;
}
方式二:以 QFile 方式读取、写入
bool MyMainWindow::openTextByIoDevice(const QString &fileName)
{
QFile file(fileName);
if (!file.exists())
return false;
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return false;
ui->plainTextEdit->setPlainText(file.readAll());
file.close();
ui->tabWidget->setCurrentIndex(0);
return true;
}
bool MyMainWindow::saveTextByIoDevice(const QString &fileName)
{
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return false;
QString str = ui->plainTextEdit->toPlainText();
QByteArray byteArr = str.toUtf8();
file.write(byteArr, byteArr.length());
file.close();
ui->tabWidget->setCurrentIndex(0);
return true;
}