Russian Qt Forum
Ноябрь 27, 2024, 01:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTextEdit и html  (Прочитано 4359 раз)
Hatebreeder
Гость
« : Март 08, 2010, 15:51 »

Достоточно строчки:
 ui->textEdit->acceptRichText();
...что бы работать с html? Как с помощью Rich text сделать цветным текст? Как потом все это сохранить в в файл что бы html остался?)
Малова-то в книгах информации по QText Edit. Подскажите пожалуйста.
Записан
SABROG
Гость
« Ответ #1 : Март 08, 2010, 17:06 »

Достоточно строчки:
 ui->textEdit->acceptRichText();
...что бы работать с html?

Этот метод возвращает true (по умолчанию) или false, если пользователю разрешается вставлять (из буфера обмена) или переносить (drag & drop, из браузера например) Rich Text. То есть с сохранением цветов, жирности, шрифта и прочее. Иначе вставляется как обычный текст (как в блокнот).

Вообще с этим QTextEdit дело ясное, что дело тёмное. Там такая замысловатая структура, что сам чёрт ногу сломит, а про обилие классов, которые всем этим управляют я вообще молчу. Вот например в чем разница, если я поставлю форматирование через тег "<span style="color: 'green'">Line 1</span>" или через такой код?:

Код
C++ (Qt)
    QTextDocument *document = edit->document();
    QTextCursor cursor(document);
 
    cursor.movePosition(QTextCursor::Start);
    cursor.movePosition(QTextCursor::EndOfLine, QTextCursor::KeepAnchor);
 
    QTextCharFormat format;
    format.setForeground(Qt::green);
 
    cursor.mergeCharFormat(format);
 

Вероятно в том, что во втором случае "html" код уже обработан и форматирование задано в "понятном" для Qt виде. Если мы захотим изменить цвет слова, то что большинство людей сделает? Добавит заново измененный "html" код или будет работать с классом QTextCharFormat? Если первый вариант влияет на состояние второго, то скорее всего, второй вариант никак не влияет на установленный html код. На экране видим белое по черному, а в html черное по белому.

Тут появляется класс QTextDocumentWriter. Ставим ему формат в котором будем сохранять writer.setFormat("HTML"). Загружать в QTextEdit обратно нужно будет уже через QFile. Всё бы ничего, но вот HTML не умеет хранить картинки или пользовательские текстовые объекты. Казалось бы решением мог бы быть "ODF", но пока в него можно только сохранить, а вот читать из него Qt еще не умеет. Жалко, что у QTextDocument нет поддержки QDataStream, жизнь бы упростилась.
Записан
Hatebreeder
Гость
« Ответ #2 : Март 10, 2010, 13:34 »

Спасибо большое.
Вроде все получилось. Вот только как сделать что бы этот код работал не только один раз, и не только с первой строчкой?
И выравнивание в html идет по всему тексту а не по выделенному, как в плаин текст. Как это можно поправить?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.068 секунд. Запросов: 20.