1

所以,我正在 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()); 将所有文本转换为纯文本,但我不知道如何在不这样做的情况下使保存槽工作。一如既往,非常感谢您花时间帮助我并阅读我的问题。如果需要更多信息,我将非常乐意提供。编辑:另外,我希望将来能够添加段落对齐,所以我应该让我的文本编辑器严格地富文本吗?

4

1 回答 1

2

使用toHtml()而不是toPlainText(). setHtml()改为使用时setText()

也使用toAscii()代替toUtf8()不丢失用户的语言代码页。

见:http ://doc.qt.io/archives/qt-4.7/qtextedit.html

于 2012-08-31T22:27:33.190 回答