Russian Qt Forum

Qt => Вопросы новичков => Тема начата: alcalinn от Апрель 08, 2016, 19:06



Название: Проблема с фоном - StyleSheet Qt
Отправлено: alcalinn от Апрель 08, 2016, 19:06
Cоздал класс наследующий от QWidget. Хотел добавить к нему фон при помощи StyleSheet, но почему-то в этот фон раскрашиваются кнопки и Label которые находятся на этом QWidget-е. Можете объяснить почему и/или сказать что надо сделать чтобы нормально поставить фон?

Here the program
(http://i.stack.imgur.com/Ss7hW.png)


Название: Re: Проблема с фоном - StyleSheet Qt
Отправлено: torwig от Апрель 08, 2016, 19:16
Пишите правило в setStyleSheet
- по имени класса:
Код:
.QWidget
{
ваш CSS
}

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

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


Название: Re: Проблема с фоном - StyleSheet Qt
Отправлено: alcalinn от Апрель 08, 2016, 19:27
Пишите правило в setStyleSheet
- по имени класса:
Код:
.QWidget
{
ваш CSS
}

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

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

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

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


Название: Re: Проблема с фоном - StyleSheet Qt
Отправлено: Alex Custov от Апрель 08, 2016, 21:35
#Widget3{background-image:url(./image.png)} //Во всяком случае это почему-то не работает, фон не появляется.

https://wiki.qt.io/How_to_Change_the_Background_Color_of_QWidget


Название: Re: Проблема с фоном - StyleSheet Qt
Отправлено: Bepec от Апрель 08, 2016, 22:14
Ранее у кутешки была такая бага - виджет верхнего уровня не принимал картинку.

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

PS попробуйте, вдруг этот совет поможет :)

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


Название: Re: Проблема с фоном - StyleSheet Qt
Отправлено: pl от Апрель 12, 2016, 00:03
Решение довольно простое, хоть и кажется костыльным - положить QFrame в виджет и потом уже на него накидать остальное

Проблема решается ручной отрисовкой стиля, как в примере в вики в предыдущем комментарии.


Название: Re: Проблема с фоном - StyleSheet Qt
Отправлено: alcalinn от Апрель 23, 2016, 22:57
Ранее у кутешки была такая бага - виджет верхнего уровня не принимал картинку.

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

PS попробуйте, вдруг этот совет поможет :)

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

Можешь дать пример?


Название: Re: Проблема с фоном - StyleSheet Qt
Отправлено: Bepec от Апрель 24, 2016, 03:08
Почему бы и нет.

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

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

to pl: ручная отрисовка стиля != QSS. Это как раз жуткий отказ от изменяемого на лету стиля в угоду жестко закодированному оформлению :D


Название: Re: Проблема с фоном - StyleSheet Qt
Отправлено: Alex Custov от Апрель 25, 2016, 10:31
Правильный ответ дан по ссылке https://wiki.qt.io/How_to_Change_the_Background_Color_of_QWidget . Использование QFrame - это хак, который в принципе делает тоже самое, что и решение по ссылке - вручную отрисовывает стиль. Не сам QSS, а объект стиля.


Название: Re: Проблема с фоном - StyleSheet Qt
Отправлено: Bepec от Апрель 25, 2016, 12:40
Я б сказал и то и то хак, который исправляет баг.
PS но это уже несущественно :)