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,而不必进行这些转换。