Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Dexer от Февраль 20, 2010, 04:11



Название: QTreeView + рисование
Отправлено: Dexer от Февраль 20, 2010, 04:11
Всем привет!

Есть модель и если в  ней data(index, role) для роли (Qt::DisplayRole) возвращает QVariantList (QDateTime dtBegin, QDateTime dtEnd), то в QTreeView должен показываться временной интервал от dtBegin до dtEnd. (Что-то такого плана как на картинке).

Спасибо.


Название: Re: QTreeView + рисование
Отправлено: shirushizo от Февраль 20, 2010, 08:32
1. Не совсем понятно зачем QTreeView и модель.
2. Желательно данные циферками и как дожлен выглядить результат


Название: Re: QTreeView + рисование
Отправлено: lit-uriy от Февраль 20, 2010, 08:52
>>1. Не совсем понятно зачем QTreeView и модель.
Это типа диаграммы Ганта, модель, чтобы данные из БД брать, Дерево - чтобы вложенные можно было просматривать

>>2. Желательно данные циферками и как дожлен выглядить результат
на основе первого пункта, одна ячейка - одни сутки, соответственно закрасить ему хочется диаппазон суток.


Название: Re: QTreeView + рисование
Отправлено: Dexer от Февраль 22, 2010, 12:28
>>1. Не совсем понятно зачем QTreeView и модель.
Это типа диаграммы Ганта, модель, чтобы данные из БД брать, Дерево - чтобы вложенные можно было просматривать
Модель неважно какая и откуда она берет данные, главное чтобы она имела некоторые данные в формате QVariantList (QDateTime dt1, QDateTime dt2). Модель как бы уже есть. 

>>2. Желательно данные циферками и как дожлен выглядить результат
на основе первого пункта, одна ячейка - одни сутки, соответственно закрасить ему хочется диаппазон суток.
Именно нужно закрасить временной диапозон. Как сделать без модели и с QTreeWidget я знаю. А вот как с моделью, немного затрудняюсь.


Название: Re: QTreeView + рисование
Отправлено: shirushizo от Февраль 22, 2010, 15:30
Похоже int QAbstractItemModel::columnCount ( const QModelIndex & parent = QModelIndex() )
для каждого предка. Соответственно DateTime end - start.
Или суммарное количество заврашеных + незакрашенных одинаво для всех элементов? Если да, то просто цвета клеток задавать:
QVariant QAbstractItemModel::data(const QModelIndex & index, int role = Qt::DisplayRole)
{
       //в list структура (QDateTime start, QDateTime end)
       int start = list.at(index.row).start.day();
       int end = list.at(index.row).end.day();
      //...
      if(role==Qt::BackgroundRole)
           if((index.column()=>start)&&((index.column()<=end))) //start и end надо привести к int
                   return Qt::red;
           else
                   return Qt::blue;
      //....
}
Я просто саму задачу доконца не понимаю, если можно, дайте ссылку