保存格式化文本 Qt 的文件

我目前正在制作记事本,但发现了一个问题。 我想在一个 .rtf 文件中使用不同的字体、点大小和颜色保存一个格式化文本的文件,但它只是在没有格式化的情况下保存,所以没有任何颜色或不同的字体。

这是我用来保存文件的代码:

void MainWindow::on_saveas_clicked()
{
    QTextEdit *edit = getTabTextEdit();
    QString fileName;
    fileName = QFileDialog::getSaveFileName(this,tr("Save a file"),"New Document",tr("Rich Text Format(*.rtf);; All Files (*)"));
    QFile file(fileName);
    if(ui->tabwidget->currentWidget() == ui->tab_1)
    {
        if(file.open(QIODevice::Writeonly | QFile::Text))
        {
            ui->tabwidget->setTabText(ui->tabwidget->currentIndex(),file.fileName());
            QTextStream out (&file);
            QString text = ui->edit->toPlainText();
            out << text;
            file.close();
            ui->edit->setfocus();
        }
    }
    else
    {
        if(file.open(QIODevice::Writeonly | QFile::Text))
        {
            ui->tabwidget->setTabText(ui->tabwidget->currentIndex(),file.fileName());
            QTextStream out (&file);
            QString text = edit->toPlainText();
            out << text;
            file.close();
            edit->setfocus();
        }
    }
}

有没有办法保存格式化 QTextEdit 文本的文件?

randy8546 回答:保存格式化文本 Qt 的文件

我猜 Qt 不支持 RTF 格式,这是 MS 的专有格式,请参阅 https://en.wikipedia.org/wiki/Rich_Text_Format。所以用 RTF 扩展名保存它是没有意义的。没关系。

然而,Qt 确实支持通过 HTML 标签进行格式化(至少是 HTML 的一些子集,参见 https://doc.qt.io/qt-5/richtext-html-subset.html)。因此,您可以将文件另存为 HTML 并以相同方式加载。只需使用 QTextEdit::toHtml()QTextEdit::setHtml(),参见 https://doc.qt.io/qt-5/qtextedit.html#html-prop。换句话说,如果您想要格式化文本,请不要使用 toPlainText()。纯文本之所以称为纯文本,是因为它不包含任何格式。

,

试试

file.write(edit->toPLainText().toLocal8Bit());

因为,QTextStream 写入带有格式信息的文本。

本文链接:https://www.f2er.com/2689.html

大家都在问