Russian Qt Forum
Ноябрь 24, 2024, 12:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не могу покрасить строки в дереве  (Прочитано 3370 раз)
frostyland
Гость
« : Октябрь 14, 2010, 15:04 »

Уже голову сломал.
Пихал QAbstractItemModel::setData(index, QColor(Qt::green), Qt::BackgroundRole); в момент добавления элемента,
нет эфекта.

index однозначно правильный, выделяется именно нужный элемент, значит и краситься должен он
Код
C++ (Qt)
 
m_selection->setCurrentIndex(index(node), QItemSelectionModel::ClearAndSelect);
m_pluginManager->setCurrent(item);
QAbstractItemModel::setData(index(node), QColor(Qt::green), Qt::BackgroundRole);
QAbstractItemModel::setData(index(node), QColor(Qt::red), Qt::BackgroundRole);
 

В ::data(...) const пихать  нельзя, метод константный.

Как покрасить строчки по определенному алгоритму?Непонимающий
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #1 : Октябрь 14, 2010, 15:38 »

Этим занимается делегат. Посмотри пример Star Delegate. Тебе надо переопределить метод paint, чтобы красить строки.
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
Kolobok
Гость
« Ответ #2 : Октябрь 14, 2010, 15:40 »

Цитировать
bool QAbstractItemModel::setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole ) [virtual]
Sets the role data for the item at index to value.
Returns true if successful; otherwise returns false.
The dataChanged() signal should be emitted if the data was successfully set.
The base class implementation returns false. This function and data() must be reimplemented for editable models.
Записан
frostyland
Гость
« Ответ #3 : Октябрь 15, 2010, 11:41 »

Этим занимается делегат. Посмотри пример Star Delegate. Тебе надо переопределить метод paint, чтобы красить строки.
Емае... а что, попроще то никак? Всего то строки покрасить.
Где-то на форуме я встречал, что можно при добавлении элемента назначить ему бекграунд и форграунд.
Записан
Kolobok
Гость
« Ответ #4 : Октябрь 15, 2010, 12:07 »

Если у тебя самописная модель, наследованная от QAbstractItemModel, то переопредели методы data() и setData(). Если используешь QStandardItemModel, то просто вызывай её методы, а не QAbstractItemModel.
Записан
frostyland
Гость
« Ответ #5 : Октябрь 15, 2010, 12:39 »

Вот это да! Не устаю удивляться моделям данных троллей.
Оказывается, из ::data можно покрасить итем вот таким оригинальным образом
Код
C++ (Qt)
QVariant PluginTreeModel::data(const QModelIndex &index, int role) const
{
switch (role)
{
case Qt::DisplayRole:
break;
case Qt::CheckStateRole:
break;
case Qt::ForegroundRole:
if(index.column()!=1)
return Qt::darkGray;
break;
case Qt::BackgroundRole:
if(index.column()==1)
return Qt::darkGreen;
break;
}
break;
}
return QVariant();
}
 

Оххх, изучать еще и изучать )))
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.289 секунд. Запросов: 23.