Форматированный текст в QTreeWidgetItem

Мне нужно создать QTreeWidgetItems, которые поддерживают форматированные тексты, например:

MyCreatedType – INTEGER(1)

(то есть: строка выше должна иметь «нормальную» часть: MyCreatedType и «форматированную» часть (в нашем случае INTEGER(1)).

Любая идея, как это сделать?

Спасибо.


person Ferenc Deak    schedule 06.07.2012    source источник
comment
Я не совсем понимаю вопрос - вы хотите поставить числа в текстовую строку элемента?   -  person badgerr    schedule 06.07.2012
comment
Нет, я просто хочу, чтобы текст элемента можно было отформатировать (например: некоторые его части будут выделены полужирным шрифтом или с использованием другого шрифта, цвета и т. д.).   -  person Ferenc Deak    schedule 06.07.2012
comment
возможно, дубликат этого вопроса ?   -  person azf    schedule 06.07.2012


Ответы (1)


Что вам нужно, так это делегат. Делегаты объясняются здесь:

Общая процедура, которой я следую при создании и использовании пользовательских делегатов:

  1. Create a custom type with the information you want to encapsulate.
    • For your case, perhaps fields for the variable type name and type value.
  2. Сохраните эти пользовательские типы в своей модели, обернув их в QVariant, чтобы удовлетворить типы возвращаемых значений, требуемые QAbstractItemModel.
  3. Create a control that matches the UI you want.
    • In this case it might mean a QText label for "MyCreatedType" followed by a second label in bold for "Integer(1)".
    • Возможно, элемент управления имеет такие методы, как «setTypeName» и «setTypeValue».
  4. Create a delegate that paints your specific control when your custom type is found.
    • You will have to map fields in the custom type to fields in the custom UI control as needed.
  5. Свяжите свою модель и делегируйте с используемым древовидным представлением.

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

person ccozad    schedule 20.01.2014