Russian Qt Forum

Qt => QSS => Тема начата: kambala от Февраль 11, 2012, 19:13



Название: [РЕШЕНО] фоновый цвет QAbstractItemView
Отправлено: kambala от Февраль 11, 2012, 19:13
Здравствуйте. Как правильно выставить фоновый цвет у любого наследника QAbstractItemView? Если выставляю через
Код
C++ (Qt)
_resultsTreeWidget->setStyleSheet("background-color: black");
то скроллбар тоже меняет цвет и выглядит ненативно:
(http://i1125.photobucket.com/albums/l592/kambala_decapitator/search_css.png)

если же выставить фон непосредственно у элемента (хоть в модели, хоть через Q*WidgetItem), то результат тоже не самый красивый:
(http://i1125.photobucket.com/albums/l592/kambala_decapitator/search_itemcolor.png)

Это проявляется как при использовании Q*Widget, так и при связке model/view.

Также пробовал выставлять стиль самому диалогу (результат как в варианте 1, но чернеет абсолютно всё, включая кнопки) и выставлять setAutoFillBackground(true) диалогу/QAbstractItemView - тоже не помогает.

Например, в QTextEdit этого можно добиться через <body bgcolor = "black">, но QAbstractItemView же не может использовать HTML.


Название: Re: фоновый цвет QAbstractItemView
Отправлено: Kolobok от Февраль 11, 2012, 20:07
Через QPalette


Название: Re: фоновый цвет QAbstractItemView
Отправлено: andrew.k от Февраль 11, 2012, 20:10
QTreeWidget {background-color: black;} или так QAbstractItemView {background-color: black;}


Название: Re: фоновый цвет QAbstractItemView
Отправлено: Bepec от Февраль 11, 2012, 20:19
QAbstractScrollArea\n{background-color: rgb(255, 170, 0);}


СтайлШит в Qt позволяет использовать селекторы. Ставь этот стайлшит на весь основной виджет к примеру, или куда угодно :)

Указываешь тип виджета (даже свой к примеру), далее в {} уже свойства. И он автоматом их применять будет.

Более подробно в ассистанте.


Название: Re: фоновый цвет QAbstractItemView
Отправлено: kambala от Февраль 11, 2012, 20:47
спасибо! оба варианта работают. но я так понимаю, что через стили предпочтительнее, т.к.
Цитировать
If you create a new widget we strongly recommend that you use the colors in the palette rather than hard-coding specific colors.


Название: Re: фоновый цвет QAbstractItemView
Отправлено: andrew.k от Февраль 11, 2012, 21:55
спасибо! оба варианта работают. но я так понимаю, что через стили предпочтительнее, т.к.
Цитировать
If you create a new widget we strongly recommend that you use the colors in the palette rather than hard-coding specific colors.
Видимо имеются ввиду кастомные виджеты.
А вообще разницы нет как хард-кодить)
Если ты захардкодишь задание стиля, то это будет то же самое, что захардкодить конкретный цвет.


Название: Re: [РЕШЕНО] фоновый цвет QAbstractItemView
Отправлено: kambala от Февраль 19, 2012, 03:02
в продолжении темы - в Mac OS X никак не хочет исчезать голубой кусок слева при выделении строки (под виндой проблем нет), при простом наведении на строку такое не проявляется.
Код
C++ (Qt)
   setStyleSheet("QTreeWidget { background-color: black; }"
                 "QTreeWidget::item { selection-color: red; }"
                 "QTreeWidget::item:hover { border: 1px solid #bfcde4; }"
                 "QTreeWidget::item:selected { border: 1px solid #567dbc; }"
                );


Название: Re: [РЕШЕНО] фоновый цвет QAbstractItemView
Отправлено: kambala от Февраль 21, 2012, 13:31
в общем, если установить QTreeWidget::branch { background-color: black; }, то фон становится чёрным, но и сам бранч-контрол исчезает, а дополнительная установка картинки не помогает.


Название: Re: [РЕШЕНО] фоновый цвет QAbstractItemView
Отправлено: andrew.k от Февраль 21, 2012, 13:40
в общем, если установить QTreeWidget::branch { background-color: black; }, то фон становится чёрным, но и сам бранч-контрол исчезает, а дополнительная установка картинки не помогает.
может QTreeWidget::branch { background-color: transparent; }?


Название: Re: [РЕШЕНО] фоновый цвет QAbstractItemView
Отправлено: kambala от Февраль 21, 2012, 13:50
пробовал - никакого эффекта


Название: Re: [РЕШЕНО] фоновый цвет QAbstractItemView
Отправлено: mutineer от Февраль 21, 2012, 13:52
А если QTreeWidget::branch { background-color: rgba(1, 0, 0, 0.5); }


Название: Re: [РЕШЕНО] фоновый цвет QAbstractItemView
Отправлено: kambala от Февраль 21, 2012, 14:05
под виндой то же самое что и при black (не видно контрола), вряд ли в мак ос будет что-то другое

кстати в вин7 тоже есть интересная штука: этот бранч-контрол на чёрном фоне (да и вроде как на любом другом кроме дефолтного белого) криво смотрится, но при наведении светится нормально. (красную рамку я в пэинте нарисовал чтоб было понятнее куда смотреть). в ХР вроде как нормально, хотя может только если бранч-контролом выступают +-


Название: Re: [РЕШЕНО] фоновый цвет QAbstractItemView
Отправлено: mutineer от Февраль 21, 2012, 14:09
под виндой то же самое что и при black (не видно контрола), вряд ли в мак ос будет что-то другое

Вполне может быть другое поведение - отрисовка ж от стиля зависит, а они под разными осями разные. У меня был случай, когда у ListView не делался прозрачным фон. Оказалось что так происходит только на убунте (при QGtkStyle)


Название: Re: [РЕШЕНО] фоновый цвет QAbstractItemView
Отправлено: kambala от Февраль 21, 2012, 14:36
я там предыдущее сообщение отредактировал :)


Название: Re: [РЕШЕНО] фоновый цвет QAbstractItemView
Отправлено: andrew.k от Февраль 21, 2012, 15:56
кстати в вин7 тоже есть интересная штука: этот бранч-контрол на чёрном фоне (да и вроде как на любом другом кроме дефолтного
Ну так потому что он черная стрелка. Как же еще он должен смотреться на черном фоне?
Рисуй свою стрелку белую.