QT Creator只会将文本Edit中的第一个单词转换为纯文本
QT Creator will only convert the first word from text Edit to plain text
这是一个笔记程序,你在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();
}
您只阅读了代码中的一个词:
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
,而不必进行这些转换。
这是一个笔记程序,你在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();
}
您只阅读了代码中的一个词:
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
,而不必进行这些转换。