Qt лучший способ отобразить очень большой форматированный текст? - PullRequest
7 голосов
/ 02 августа 2011

Мне нужно отобразить очень большие журналы, которые используют HTML-теги для маркировки различных типов данных.

Использование QTextEdit и QTextBrowser действительно замедляет работу приложения, особенно при операциях добавления. Мне бы очень хотелось сохранить интерфейс и возможности QTextEdit.

Я видел людей, которые реализовали свой собственный вариант TextEdit для повышения производительности, но я удивлялся, если кто-нибудь решит эту проблему с помощью инструментов "Qt". Я думал об использовании инфраструктуры Model / View для загрузки данных по требованию, но я думаю, что это не совсем то, для чего он был предназначен.

Может быть, создать подкласс QTextEdit и переопределить некоторые его слоты для прокрутки ...

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

Спасибо.

Ответы [ 4 ]

2 голосов
/ 02 августа 2011

Используйте QPlainTextEdit для больших файлов журналов - для этого и было разработано.Вы не получаете полный набор опций, предоставляемых QTextEdit, но вы можете установить шрифт и цвет текста.

1 голос
/ 02 августа 2011

Так как ваш журнал предположительно табличный на каком-то уровне, то структура Model / View звучит так, как будто она может работать для вас.Возможно, вы могли бы попробовать использовать QListView с QGraphicsTextItem:

http://doc.qt.nokia.com/latest/qgraphicstextitem.html

. Есть методы для установки / получения HTML:

http://doc.qt.nokia.com/latest/qgraphicstextitem.html#setHtml

http://doc.qt.nokia.com/latest/qgraphicstextitem.html#toHtml

Вы получите некоторые преимущества и неудобства, написав его таким образом.Но вы, безусловно, должны быть в состоянии отточить вставки и добавить скорость.

0 голосов
/ 03 августа 2011

Поскольку окупаемость инвестиций при повторной реализации QTextEdit с архитектурой Model / View низкая, я остановлюсь на комментарии @spraff об использовании подкачки.

По сути, я ограничу количество строк, которые я храню в своем журнале, поскольку журнал также записывается в файл, если пользователю потребуется что-то из прошлого или будущего (путем добавления специальных кнопок), я будучитать его из файла динамически (облегченная модель / вид ....).

0 голосов
/ 02 августа 2011

почему бы не использовать QWebKit? Сам модуль довольно тяжелый, но скорость рендеринга очень хорошая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...