Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Hvzh от Декабрь 23, 2015, 09:57



Название: Непонятки с QSS
Отправлено: Hvzh от Декабрь 23, 2015, 09:57
Доброго времени суток!

Имеется диалог с двумя кнопками. Пытаюсь раскрасить их используя QSS. Где-то явно ошибаюсь, но не пойму, где. При таком коде

Код:
    this->setStyleSheet("QPushButton { \
                        color: black; \
                        background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #E0EEEE, stop: 0.1 #4876FF, stop: 0.49 #4876FF, stop: 0.5 #4876FF, stop: 1 #E0EEEE);\
                        border-width: 1px;\
                        border-color: #339;\
                        border-style: solid;\
                        border-radius: 7;\
                        padding: 3px;\
                        padding-left: 5px;\
                        padding-right: 5px;\
                        }");
    setStyleSheet("{background-color: blue;}");

фон диалога становится синим, однако цвет кнопок при этом остается дефолтным. Если же строку
Код:
 setStyleSheet("{background-color: blue;}");
переместить вверх, то кнопки раскрашиваются, а фон диалога остается дефолтным. В итоге спасла замена строки на
Код:
qApp->setStyleSheet("QDialog{background-color: blue;}");
Тем не менее, мне непонятно, почему не прошел первый вариант?


Название: Re: Непонятки с QSS
Отправлено: Bepec от Декабрь 23, 2015, 10:03
stylesheet это строка. большая с переносами но строка.
this->setStyleSheet и setStyleSheet это синонимы одного метода. Т.е. вторым setStyleSheet вы перезаписывали весь styleSheet.

Вам же нужно было скомбинировать оба варианта в один, например
Код:
this->setStyleSheet("QPushButton { \
                        color: black; \
                        background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #E0EEEE, stop: 0.1 #4876FF, stop: 0.49 #4876FF, stop: 0.5 #4876FF, stop: 1 #E0EEEE);\
                        border-width: 1px;\
                        border-color: #339;\
                        border-style: solid;\
                        border-radius: 7;\
                        padding: 3px;\
                        padding-left: 5px;\
                        padding-right: 5px;\
                        }
                        .QDialog
                        {
                        background-color: blue;
                        }
                       
                       
");



Название: Re: Непонятки с QSS
Отправлено: Hvzh от Декабрь 23, 2015, 11:01
stylesheet это строка. большая с переносами но строка.
this->setStyleSheet и setStyleSheet это синонимы одного метода. Т.е. вторым setStyleSheet вы перезаписывали весь styleSheet.

Вам же нужно было скомбинировать оба варианта в один, например
Код:
this->setStyleSheet("QPushButton { \
                        color: black; \
                        background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #E0EEEE, stop: 0.1 #4876FF, stop: 0.49 #4876FF, stop: 0.5 #4876FF, stop: 1 #E0EEEE);\
                        border-width: 1px;\
                        border-color: #339;\
                        border-style: solid;\
                        border-radius: 7;\
                        padding: 3px;\
                        padding-left: 5px;\
                        padding-right: 5px;\
                        }
                        .QDialog
                        {
                        background-color: blue;
                        }
                        
                        
");


Спасибо! Как говорится, век живи - век учись.


Название: Re: Непонятки с QSS
Отправлено: Hvzh от Декабрь 23, 2015, 11:04
Хотя, такая конструкция тоже не прошла:

Код:
setStyleSheet("#Dialog{background-color: blue;}");


Название: Re: Непонятки с QSS
Отправлено: Bepec от Декабрь 23, 2015, 12:49
Вы указываете класс Dialog. Мб вы ошиблись и хотели написать QDialog?
В любом случае дальнейшие рассуждения без кода - это гадания.