crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> [4.x.x] Вид курсора в QTreeView
panter_dsd
  опции профиля:
сообщение 14.4.2009, 16:39
Сообщение #1


Жаждущий знаний
***

Группа: Участник
Сообщений: 254
Регистрация: 1.1.2009
Из: Санкт-Петербург
Пользователь №: 474

Спасибо сказали: 32 раз(а)




Репутация:   3  


Как задать свой цвет для курсора? Отнаследовался от QTreeVew и переопределяю:

void  QFullView::drawRow ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const
{
    QTreeView::drawRow(painter,option,index);
if(index.row()==currentIndex().row())
{
    painter->setPen(Qt::green);
    painter->drawRect(option.rect);
}
}


Но линия рисуется только слева и сверху от итема. После дня мозго....ва мучений понял, что за вид курсора отвечает стиль, и через палитру или стайлшит ничего не поменять. Как его все таки сделать нужным мне цветом?

Сообщение отредактировал panter_dsd - 14.4.2009, 16:42
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
SABROG
  опции профиля:
сообщение 15.4.2009, 20:32
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(igor_bogomolov @ 15.4.2009, 21:11) *
Можно просто проверить унаследован ли QApplication::style() от QWindowsStyle.


Так чтоль?

    if(qApp->style()->inherits("QWindowsStyle"))
    {
    ...
    }


В принципе так можно:

    QWindowsStyle *st = qobject_cast<QWindowsStyle *>(qApp->style());


Но проблема в том, что указатель будет валидным для всех стилей на базе QWindowsStyle. Т.е. конкретно этот класс хрен локализуешь.
Я посмотрел исходники стилей CDE и Motif. Выяснил, что CDE базируется на стиле Motif и использует его средства для отрисовки примитивов, в то время как сам Motif использует QCommonStyle. А внути этого стиля работает такая логика, если цвет в background валидный (isValid), то выбирается один из двух цветов - черный или белый, если же цвет не валидный, то используется цвет из o.palette.foreground().color() уже без изминений. Стало быть повлиять на него можно через паллитру, но при этом цвет в background надо сделать инвалидным каким-то макаром.

Сообщение отредактировал SABROG - 15.4.2009, 21:19
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- panter_dsd   [4.x.x] Вид курсора в QTreeView   14.4.2009, 16:39
- - igor_bogomolov   Под курсором подразумевается пунктирная рамка вокр...   14.4.2009, 16:59
- - panter_dsd   1. А можешь точнее вспомнить? 2. Сместил, не получ...   14.4.2009, 17:51
- - igor_bogomolov   На память не могу. Сейчас у себя попробую, чуть по...   14.4.2009, 18:08
- - panter_dsd   Проблема решена. void QFullView::drawRow ...   14.4.2009, 19:19
- - igor_bogomolov   Это самое простое решение - отрисовать рамку через...   14.4.2009, 21:11
- - panter_dsd   Тоже интересно. Вот только цвет почему-то нельзя з...   15.4.2009, 6:20
|- - SABROG   Цитата(panter_dsd @ 15.4.2009, 7:20) Тоже...   15.4.2009, 8:50
- - igor_bogomolov   Цитата(SABROG @ 15.4.2009, 9:50) А если ц...   15.4.2009, 9:01
- - panter_dsd   Скорее всего цвет подбирается контрастом к другому...   15.4.2009, 11:31
- - igor_bogomolov   Продублирую из prog.org Для Windows style, в исхо...   15.4.2009, 12:44
- - SABROG   Я посмотрел другие стили, там нет такого. Т.ч. лог...   15.4.2009, 13:56
- - igor_bogomolov   SABROG, если только запускать с родным стилем. А е...   15.4.2009, 14:56
- - SABROG   Конечно можно так проверять, но это в некоторой ст...   15.4.2009, 19:03
- - igor_bogomolov   SABROG, это все понятно. Можно просто проверить ун...   15.4.2009, 20:11
- - SABROG   Цитата(igor_bogomolov @ 15.4.2009, 21:11)...   15.4.2009, 20:32
- - igor_bogomolov   2 SABROG Цитата(SABROG @ 15.4.2009, 21:32...   15.4.2009, 23:08
- - igor_bogomolov   Цитата(SABROG @ 15.4.2009, 21:32) цвет в ...   16.4.2009, 14:20
- - SABROG   512 - превышает размеры байта   16.4.2009, 14:59
- - igor_bogomolov   Цитата(SABROG @ 16.4.2009, 15:59) 512 - п...   16.4.2009, 15:04


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


12 чел. читают эту тему (гостей: 12, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.11.2024, 0:37