QT Creator只会将文本编辑中的第一个单词转换为纯文本

时间:2017-07-01 14:13:53

标签: c++ qt qt-creator fstream qtextedit

这是一个笔记程序,您在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();
 }

1 个答案:

答案 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,而无需进行这些转换。