这是一个笔记程序,您在textEdit
中写下,并使用fstream
保存。我试图弄清楚如何加载以前在textEdit
上输入的所有单词,现在只加载第一个单词。我认为它与白色空间有关。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <fstream>
using namespace std;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// Setup code
ui->textEdit->setReadOnly(true);
ui->textEdit->append("Select one of the buttons on the left to pick a log");
}
MainWindow::~MainWindow()
{
delete ui;
}
string buttons;
string lastSavedText[] =
{
" ",
" "
};
QString qLastSavedTextHome, qLastSavedTextWork;
这是第一个按钮
void MainWindow::on_homeButton_clicked()
{
// Preparing text edit
ui->textEdit->setReadOnly(false);
ui->textEdit->clear();
ui->textEdit->setOverwriteMode(true);
buttons = "Home";
// Loading previously saved text
ifstream home;
home.open("home.apl");
home >> lastSavedText[0];
home.close();
qLastSavedTextHome = QString::fromStdString(lastSavedText[0]);
ui->textEdit->setPlainText(qLastSavedTextHome);
}
这个下一个按钮还没有完全开发出来:
void MainWindow::on_workButton_clicked()
{
// Preparing text edit
ui->textEdit->setReadOnly(false);
ui->textEdit->clear();
buttons = "Work";
// Converts textEdit to string
QString textEditText = ui->textEdit->toPlainText();
string plainText = textEditText.toStdString();
}
这是我将textEdit
转换为字符串并将textEdit
保存到流中的位置:
void MainWindow::on_saveButton_clicked()
{
// Converts textEdit to string
QString textEditText = ui->textEdit->toPlainText();
lastSavedText[0] = textEditText.toStdString();
// Saving files
ofstream home;
home.open("home.apl");
home << lastSavedText[0];
home.close();
}
答案 0 :(得分:0)
您正在阅读代码中的一个字:
ifstream home;
home.open("home.apl");
home >> lastSavedText[0]; // Here!!!
home.close();
我建议您使用QFile
来阅读和写入文件,这样做会更容易。
以下是一个例子:
QFile file { "home.apl" };
if ( !file.open(QIODevice::ReadOnly | QIODevice::Text) )
{
qDebug() << "Could not open file!";
return;
}
const auto& lastSavedText = file.readAll();
file.close();
ui->textEdit->setPlainText( lastSavedText );
你应该尽可能多地使用Qt功能。您可以直接使用QString
代替std::string
,而无需进行这些转换。