2015-07-16 6 views
0

Я пишу текстовый редактор на qt, и я наткнулся на проблему сохранения изменений файлов. Я использую rich texedit для внесения изменений в цвета, но когда я меняю цвета выбранных слов и сохраняю файл, он не сохраняет изменения цвета.Как сохранить изменения в приложении Qt?

Я знаю, что могу сделать что-то вроде файла 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); 
} 
+0

Просьба уточнить ваш вопрос: что такое виджет Qt, который вы используете? Как вы применяете изменения цвета? Как вы пытаетесь сохранить файл? – Mailerdaimon

+0

Относительно вашего замечания: * .doc isn't «просто файл». Вы можете распаковать файл * .doc и увидеть, что он состоит из нескольких файлов. Если вы посмотрите дальше, вы увидите, что такие вещи, как форматирование, сохраняются в структуре xml. – Mailerdaimon

+0

Настройки палитры для редактирования текста текста на самом деле не так, как вы должны идти. Это используется для установки цвета по умолчанию для всего текста в вашем виджете. Чтобы покрасить отдельные слова, вы действительно должны переключиться на html. См. Http://stackoverflow.com/q/2857864/2927205 – Mailerdaimon

ответ

2

Как вам не представил код, используемый для сохранения и загрузки файлов (пока) вот моя догадка:

При использовании QTextEdit для сохранения RichtText вы должны сохранить текст с помощью toHtml() и не toPlainText().

Другой способ - использовать базовые QTextDocument и QTextDocumentWriter, чтобы сохранить файл.

Если вы уточните свой вопрос о том, что используете для редактирования и сохранения текста, я отредактирую этот ответ.