Как показать гипертекст в представлении QTableView по умолчанию? - PullRequest
4 голосов
/ 27 апреля 2011

У меня есть сетка, которая наследует QTableView с моей пользовательской моделью, установленной для просмотра.Я также создал делегатов для редактирования элементов в ячейке таблицы.все они работают нормально (по крайней мере, в соответствии с моим требованием).

, но моя проблема в том, когда пользователь щелкает внутри ячейки, и если делегат для этого элемента, скажем, QTextEdit (который может обрабатывать richtext) ипользователь вставляет некоторый текст (который копируется из MSWORD с информацией о стиле с текстом) в texteditbox.в этот момент он показывает текст правильно (означает полужирный шрифт, курсив, размер шрифта и т. д.), пока присутствует делегат, но после того, как данные установлены на модель и обновлено представление, представление по умолчанию не отображает информацию о стиле.он показывает простой текст HTML (если я устанавливаю данные модели, когда вызывается слот dataChanged делегата, и я получаю html от делегата).

Я хочу, чтобы представление таблицы по умолчанию обрабатывало HTML и отображало текст в соответствии со своим стилем.

У кого-нибудь есть идеи, как с этим справиться?Заранее спасибо!Я использую QT версии 4.1.4 (я знаю его старый, но его требования проекта)

Ответы [ 2 ]

2 голосов
/ 03 мая 2011

По умолчанию отображаемый редактор связан с типом этого конкретного столбца (например, int, double, QDateTime). Этот редактор контролируется делегатом, назначенным представлению. В частности, обратите внимание на функции createEditor () и setEditorData () .

Вполне вероятно, что ваша модель использует тип QString и передает эту строку в QTextEdit, который автоматически проверяет его на наличие текста HTML и, поскольку он это делает, отображает его как HTML. Однако стандартный делегат не проверяет текст.

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

0 голосов
/ 03 мая 2011

Делегат использует объект QTextEdit, чтобы позволить пользователю редактировать текст, этот объект может обрабатывать HTML и / или richtext и т. Д. Если представление не показывает его правильно, это означает, что делегат, который вы используете сам не может обрабатывать эту форму данных. Боюсь, вам придется переписать виртуальный метод drawDisplay() вашего делегата, чтобы можно было отображать данные так же, как QTextEdit.

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