【问题标题】:Saving and loading text files that aren't plain text保存和加载非纯文本的文本文件
【发布时间】:2012-08-31 22:22:59
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    使用toHtml() 而不是toPlainText()。 设置时使用setHtml() 而不是setText()

    同时使用toAscii() 代替toUtf8() 以免丢失用户的语言代码页。

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

    【讨论】:

    • 之后我还要保持到Utf8吗?老实说,我不知道那是做什么的,但是帮助模式下的 Qt 类参考有它。
    • 未来还会支持文本对齐之类的功能吗?我非常有信心它支持字体颜色之类的东西,因为我以前涉足过 xhtml。
    • 如果我不转换成任何东西,我也会得到错误。它说: C:\Documents and Settings\Me\My Documents\C++ Projects\Qt Gui Applications\WordWrite-build-desktop-Qt_4_8_1_for_Desktop__-_MinGW__Qt_SDK__Debug\..\WordWrite\wordwritemain.cpp:87: error: no matching function for call到 'QFile::write(QString)'
    • 哎哟。尝试使用 toAscii(),这样它就不会将语言代码从一种转换为另一种。
    猜你喜欢
    • 1970-01-01
    • 2019-07-11
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 2020-09-13
    • 2014-07-09
    • 1970-01-01
    相关资源
    最近更新 更多