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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с фоном - StyleSheet Qt  (Прочитано 7206 раз)
alcalinn
Гость
« : Апрель 08, 2016, 19:06 »

Cоздал класс наследующий от QWidget. Хотел добавить к нему фон при помощи StyleSheet, но почему-то в этот фон раскрашиваются кнопки и Label которые находятся на этом QWidget-е. Можете объяснить почему и/или сказать что надо сделать чтобы нормально поставить фон?

Here the program
Записан
torwig
Самовар
**
Offline Offline

Сообщений: 134



Просмотр профиля
« Ответ #1 : Апрель 08, 2016, 19:16 »

Пишите правило в setStyleSheet
- по имени класса:
Код:
.QWidget
{
ваш CSS
}

или
- по имени обьекта
Код:
#MyWidget
{
ваш CSS
}

ибо если без этого, то кнопки и метки имеют тот же CSS, что и у родителя (вашего наследника QWidget).
Записан
alcalinn
Гость
« Ответ #2 : Апрель 08, 2016, 19:27 »

Пишите правило в setStyleSheet
- по имени класса:
Код:
.QWidget
{
ваш CSS
}

или
- по имени обьекта
Код:
#MyWidget
{
ваш CSS
}

ибо если без этого, то кнопки и метки имеют тот же CSS, что и у родителя (вашего наследника QWidget).

Представим что Widget3 - название моего объекта. Чтобы поставить фон, я должен сделать так?

#Widget3{background-image:url(./image.png)} //Во всяком случае это почему-то не работает, фон не появляется.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Апрель 08, 2016, 21:35 »

#Widget3{background-image:url(./image.png)} //Во всяком случае это почему-то не работает, фон не появляется.

https://wiki.qt.io/How_to_Change_the_Background_Color_of_QWidget
Записан
Bepec
Гость
« Ответ #4 : Апрель 08, 2016, 22:14 »

Ранее у кутешки была такая бага - виджет верхнего уровня не принимал картинку.

Решение довольно простое, хоть и кажется костыльным - положить QFrame в виджет и потом уже на него накидать остальное. Фрейм спокойно принимает картинку.

PS попробуйте, вдруг этот совет поможет Улыбающийся

PPS маргины главного лейаута нужно в 0 установить, иначе будет неприятная рамка в 9 пикселей Улыбающийся
Записан
pl
Гость
« Ответ #5 : Апрель 12, 2016, 00:03 »

Решение довольно простое, хоть и кажется костыльным - положить QFrame в виджет и потом уже на него накидать остальное

Проблема решается ручной отрисовкой стиля, как в примере в вики в предыдущем комментарии.
Записан
alcalinn
Гость
« Ответ #6 : Апрель 23, 2016, 22:57 »

Ранее у кутешки была такая бага - виджет верхнего уровня не принимал картинку.

Решение довольно простое, хоть и кажется костыльным - положить QFrame в виджет и потом уже на него накидать остальное. Фрейм спокойно принимает картинку.

PS попробуйте, вдруг этот совет поможет Улыбающийся

PPS маргины главного лейаута нужно в 0 установить, иначе будет неприятная рамка в 9 пикселей Улыбающийся

Можешь дать пример?
Записан
Bepec
Гость
« Ответ #7 : Апрель 24, 2016, 03:08 »

Почему бы и нет.

Бага кстати осталась и на последней версии Qt. Веселый

Файл во вложении снизу поста.

to pl: ручная отрисовка стиля != QSS. Это как раз жуткий отказ от изменяемого на лету стиля в угоду жестко закодированному оформлению Веселый
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #8 : Апрель 25, 2016, 10:31 »

Правильный ответ дан по ссылке https://wiki.qt.io/How_to_Change_the_Background_Color_of_QWidget . Использование QFrame - это хак, который в принципе делает тоже самое, что и решение по ссылке - вручную отрисовывает стиль. Не сам QSS, а объект стиля.
Записан
Bepec
Гость
« Ответ #9 : Апрель 25, 2016, 12:40 »

Я б сказал и то и то хак, который исправляет баг.
PS но это уже несущественно Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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