Название: Покраска ячеек в QTableView Отправлено: ManOfOrange от Январь 13, 2011, 01:35 Здравствуйте, господа! :-)
Есть компонент, унаследованный от QFrame и имеющий в себе помимо прочего QTableView. Там же кучка собственных делегатов, унаследованных от QItemDelegate. К QTableView цепляется модель QSqlTableModel. Возможности написать свою модель нет. Есть задача выставлять ячейкам цвет фона. Пробовал кажущиеся логичными способы, найденные в том числе и на этом форуме, но ни один не заработал. Не подскажете ли чего? Название: Re: Покраска ячеек в QTableView Отправлено: Пантер от Январь 13, 2011, 08:18 Цитировать Пробовал кажущиеся логичными способы, найденные в том числе и на этом форуме Это какие именно? По какому принципу раскрашивать будешь? Вообще, делегаты для этого и сделаны.Название: Re: Покраска ячеек в QTableView Отправлено: sadhu от Январь 13, 2011, 18:56 Если не переопределял у делегата метод paint, то вполне можешь сделать прокси модель с переопределённым методом data() который на основе данных исходной модели возвращает нужный цвет для роли Qt::BackgroundColorRole.
Название: Re: Покраска ячеек в QTableView Отправлено: inri13666 от Март 06, 2011, 20:57 и я так понимаю setItemdata & setData как раз для этого но у меня не получается сразу раскрасить ячейку если для QTableView как модель используется QSqlQueryModel они всегда чёто возвращают false =((
но вот если юзать просто QStandardItemModel как модель для QTableView то всё ок =)) пример в аттаче зеркало аттачей =) (https://bitbucket.org/inri13666/qt_tests/downloads) Название: Re: Покраска ячеек в QTableView Отправлено: FireSnake от Март 09, 2011, 00:18 А что надо ? тупо покрасить ячейки?
я переопределил paint в своем делегате и покрасил вот так Код: void SpinBoxDelegate::paint(QPainter* painter, const QStyleOptionViewItem &option, const QModelIndex &index) const вот я столкнулся с задачей посложнее) как мне поставить картинку, ну или хотя бы покрасить ячейку, отредактированную с помощью делегата Название: Re: Покраска ячеек в QTableView Отправлено: alexman от Март 09, 2011, 00:22 Используй метод bool QAbstractItemModel::setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole ). Роль Qt::BackgroundRole.
Название: Re: Покраска ячеек в QTableView Отправлено: FireSnake от Март 09, 2011, 01:47 т.е. как вариант сделать свою модель на основе QSqlTableModel и переопределить метод setData?
я сделал что то вроде того Код: bool MySqlTableModel::setData(const QModelIndex &index, const QVariant &value, int role){ Название: Re: Покраска ячеек в QTableView Отправлено: FireSnake от Март 09, 2011, 01:59 ну да еще один способ покрасить ячейки попроще как было сказано ранее через прокси модель с переопределенным data, ну я просто сделал модель на основе QSqlTableModel
Код: QVariant MySqlTableModel::data(const QModelIndex &idx, int role) const{ Название: Re: Покраска ячеек в QTableView Отправлено: alexman от Март 09, 2011, 08:55 т.е. как вариант сделать свою модель на основе QSqlTableModel и переопределить метод setData? Не надо переопределять! Просто вызвать setData для своей модели!я сделал что то вроде того Код: bool MySqlTableModel::setData(const QModelIndex &index, const QVariant &value, int role){ Название: Re: Покраска ячеек в QTableView Отправлено: FireSnake от Март 09, 2011, 09:22 Так в том и проблема что QSqlTableModel игнорирует все кроме Qt::EditRole и Qt::DisplayRole
Название: Re: Покраска ячеек в QTableView Отправлено: alexman от Март 09, 2011, 10:08 Так в том и проблема что QSqlTableModel игнорирует все кроме Qt::EditRole и Qt::DisplayRole Не проверял действительно ли это так ??? Если так то можно хранить кеш и переопределить методы setData - обновление кеша, data - полученеи данных из кеша или data по умолчанию... |