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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] фоновый цвет QAbstractItemView  (Прочитано 12783 раз)
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« : Февраль 11, 2012, 19:13 »

Здравствуйте. Как правильно выставить фоновый цвет у любого наследника QAbstractItemView? Если выставляю через
Код
C++ (Qt)
_resultsTreeWidget->setStyleSheet("background-color: black");
то скроллбар тоже меняет цвет и выглядит ненативно:


если же выставить фон непосредственно у элемента (хоть в модели, хоть через Q*WidgetItem), то результат тоже не самый красивый:


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

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

Например, в QTextEdit этого можно добиться через <body bgcolor = "black">, но QAbstractItemView же не может использовать HTML.
« Последнее редактирование: Февраль 12, 2012, 02:25 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Kolobok
Гость
« Ответ #1 : Февраль 11, 2012, 20:07 »

Через QPalette
Записан
andrew.k
Гость
« Ответ #2 : Февраль 11, 2012, 20:10 »

QTreeWidget {background-color: black;} или так QAbstractItemView {background-color: black;}
Записан
Bepec
Гость
« Ответ #3 : Февраль 11, 2012, 20:19 »

QAbstractScrollArea\n{background-color: rgb(255, 170, 0);}


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

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

Более подробно в ассистанте.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #4 : Февраль 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.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
andrew.k
Гость
« Ответ #5 : Февраль 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.
Видимо имеются ввиду кастомные виджеты.
А вообще разницы нет как хард-кодить)
Если ты захардкодишь задание стиля, то это будет то же самое, что захардкодить конкретный цвет.
« Последнее редактирование: Февраль 11, 2012, 21:57 от andrew.k » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Февраль 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; }"
                );
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #7 : Февраль 21, 2012, 13:31 »

в общем, если установить QTreeWidget::branch { background-color: black; }, то фон становится чёрным, но и сам бранч-контрол исчезает, а дополнительная установка картинки не помогает.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
andrew.k
Гость
« Ответ #8 : Февраль 21, 2012, 13:40 »

в общем, если установить QTreeWidget::branch { background-color: black; }, то фон становится чёрным, но и сам бранч-контрол исчезает, а дополнительная установка картинки не помогает.
может QTreeWidget::branch { background-color: transparent; }?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #9 : Февраль 21, 2012, 13:50 »

пробовал - никакого эффекта
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
mutineer
Гость
« Ответ #10 : Февраль 21, 2012, 13:52 »

А если QTreeWidget::branch { background-color: rgba(1, 0, 0, 0.5); }
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #11 : Февраль 21, 2012, 14:05 »

под виндой то же самое что и при black (не видно контрола), вряд ли в мак ос будет что-то другое

кстати в вин7 тоже есть интересная штука: этот бранч-контрол на чёрном фоне (да и вроде как на любом другом кроме дефолтного белого) криво смотрится, но при наведении светится нормально. (красную рамку я в пэинте нарисовал чтоб было понятнее куда смотреть). в ХР вроде как нормально, хотя может только если бранч-контролом выступают +-
« Последнее редактирование: Февраль 21, 2012, 14:32 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
mutineer
Гость
« Ответ #12 : Февраль 21, 2012, 14:09 »

под виндой то же самое что и при black (не видно контрола), вряд ли в мак ос будет что-то другое

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

Сообщений: 4747



Просмотр профиля WWW
« Ответ #13 : Февраль 21, 2012, 14:36 »

я там предыдущее сообщение отредактировал Улыбающийся
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
andrew.k
Гость
« Ответ #14 : Февраль 21, 2012, 15:56 »

кстати в вин7 тоже есть интересная штука: этот бранч-контрол на чёрном фоне (да и вроде как на любом другом кроме дефолтного
Ну так потому что он черная стрелка. Как же еще он должен смотреться на черном фоне?
Рисуй свою стрелку белую.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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