保存和加载非纯文本文本文件

时间:2012-08-31 22:23:00

标签: c++ qt save text-editor richtext

所以,我正在Qt中创建一个文本编辑器。它主要是非常基本的功能。新文件,保存,打开,剪切,复制,粘贴,粗体,下划线,斜体,撤消和重做。但是,当我粗体,斜体或下划线文本,然后再次打开文本文件它打开为纯文本。如果你打开一个文件,加粗一些文本,保存它然后再打开它将是纯文本而不是粗体或任何东西。我试过阅读如何使它按照我想要的方式工作,但没有运气。我的程序甚至可以创建/打开富文本文件,但它的工作方式完全相同。我理解我编写代码的方式使它按照它的方式工作。我只是不知道如何“修复”它。

以下是我编写的使用QFileDialog保存和打开文件的代码块:

void WordWriteMain::on_actionOpen_File_triggered()
{
    QString fileName = QFileDialog::getOpenFileName(this,"Open a file","","Text (*.txt);;Rich Text (*.rtf)");
    QFile file(fileName);
    if(file.open(QIODevice::ReadOnly|QIODevice::Text)){
    ui->textBox->setText((file.readAll()));
    }
}

void WordWriteMain::on_actionSave_triggered()
{
    QString fileName = QFileDialog::getSaveFileName(this,"Open a file","","Text (*.txt);;Rich Text (*.rtf)");
    QFile file(fileName);
    if(file.open(QIODevice::WriteOnly|QIODevice::Text)){
        file.write(ui->textBox->toPlainText().toUtf8());
    }
}

我正在尝试使用QFileDialog做什么?就像我说我理解行file.write(ui-> textBox-> toPlainText()。Utf8());将所有文本转换为纯文本,但我不知道如何在不这样做的情况下使保存槽工作。 一如既往地非常感谢您花时间帮助我并阅读我的问题。如果需要更多信息,我将非常乐意提供。编辑:此外,我希望将来能够添加段对齐,所以我应该使我的文本编辑器严格富文本?

1 个答案:

答案 0 :(得分:2)

使用toHtml()代替toPlainText()。 设置时使用setHtml()代替setText()

同时使用toAscii()代替toUtf8(),不要丢失用户的语言代码页。

请参阅:http://doc.qt.io/archives/qt-4.7/qtextedit.html