Russian Qt Forum

Qt => Общие вопросы => Тема начата: Lion от Февраль 27, 2007, 22:27



Название: [Model/View] Как выделить жирным некоторые элементы...
Отправлено: Lion от Февраль 27, 2007, 22:27
Как выделить жирным некоторые элементы на уровне модели, если не известно какой шрифт будет использоваться на уровне представления? Проще говоря, надо к Qt::FontRole элемента добавить bold, но при этом выбор шрифта (названия, размера) оставить за QTreeView (предположим есть несколько представлений одной модели с разными шрифтами).


Название: [Model/View] Как выделить жирным некоторые элементы...
Отправлено: Racheengel от Февраль 28, 2007, 01:20
а почему бы этого не делать в делегате? Спросить про роль фонта из модели, если болд - то делать фонт жирным...


Название: [Model/View] Как выделить жирным некоторые элементы...
Отправлено: vregess от Февраль 28, 2007, 08:10
Код:

void Yourclass::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
  QStyleOptionViewItem opt=option;
 
  if(твое условие){
    ....
    opt.font.setBold(true);
    ....
  }
  ...

  QItemDelegate::paint(painter,opt,index);

  ...
}


Название: [Model/View] Как выделить жирным некоторые элементы...
Отправлено: Lion от Февраль 28, 2007, 10:14
В моем случае делегат использовать не получится, у меня элемент может быть добавлен плагином и только он знает по какому условию делать элемент жирным.


Название: [Model/View] Как выделить жирным некоторые элементы...
Отправлено: vregess от Февраль 28, 2007, 14:03
Цитата: "Lion"
В моем случае делегат использовать не получится, у меня элемент может быть добавлен плагином и только он знает по какому условию делать элемент жирным.


Можно из плагина возвращать класс-делегат и его использовать в твоем View-классе.

Делаешь универсального делегата, в котором вызываешь специфические делегаты. Такой делегат описывается в доке по адресу http://www.ics.com/developers/papers/  (адрес любезно подкинул vipet в одной теме). Посмотри, если устроит.