【问题标题】:How to save changes in Qt app?如何在 Qt 应用程序中保存更改?
【发布时间】:2015-10-05 09:25:16
【问题描述】:

我正在 qt 上编写一个文本编辑器,但遇到了保存文件更改的问题。我使用rich texedit对颜色进行更改,但是当我更改所选单词的颜色并保存文件时,它不会保存颜色更改。

我知道我可以制作像 config.txt 文件这样的东西,应用程序可以在其中自动进行更改,但这会进行全局更改,我想为每个单独的文件保存更改。

可以吗?

备注: Word office 可以保存单独的更改,因此 1.doc 和 2.doc 的格式不同。

void MainWindow::on_actionFont_triggered()
{
    bool ok;

    QFont font = QFontDialog::getFont(&ok,QFont("Palatino Linotype",12,QFont::Normal),this);

    if(ok)
        ui->textEdit->setFont(font);
}

void MainWindow::on_actionText_Color_triggered()
{
    QColor color = QColorDialog::getColor(Qt::white,this);
    if(color.isValid())
        ui->textEdit->setTextColor(color);
}

void MainWindow::on_actionBackground_Color_triggered()
{
    QColor color = QColorDialog::getColor(Qt::white,this);
    QPalette palette;
    palette.setColor(QPalette::Base,color);
    if(color.isValid())
        ui->textEdit->setPalette(palette);
}

【问题讨论】:

  • 请澄清您的问题:您使用的 Qt Widget 是什么?你如何应用颜色变化?您如何尝试保存文件?
  • 关于您的评论:*.doc 不是“只是一个文件”。您可以解压缩 *.doc 并查看它是由几个文件组成的。如果您进一步观察,您会发现格式等内容保存在 xml 结构中。
  • 设置调色板来改变文本颜色真的不是你应该走的路。这用于设置小部件中所有文本的默认颜色。要为单个单词着色,您确实应该切换到 html。见stackoverflow.com/q/2857864/2927205

标签: qt


【解决方案1】:

由于您尚未提供用于保存和加载文件的代码,因此我的猜测如下:

使用 QTextEdit 保存 RichtText 时,您必须使用 toHtml() 而不是 toPlainText() 保存文本。

另一种方法是使用底层的QTextDocumentQTextDocumentWriter 来保存您的文件。

如果您澄清有关您使用什么来编辑和保存文本的问题,我将编辑此答案。

【讨论】:

    猜你喜欢
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 1970-01-01
    相关资源
    最近更新 更多