Название: Как изменить цвет QGroupBox? Отправлено: zzzseregazzz от Сентябрь 16, 2013, 14:59 Добрый день.
На форме (Qt 4.4.3) есть QGroupBox ui.gb, который надо выделить при щелчке мышью. Такой код не работает! Код Единственный способ, который сработал - создать наследника QGroupBox , и в paintEvent рисовать прямоугольник. Но во первых он выходит за рамку, во вторых получается задать только жестко заданный цвет. Переменная-член класса с цветом не учитывается. В отладчике увидел, что в paintEvent почему-то другой this по сравнению с setColor. Код
Отсюда вопрос: как правильно изменить цвет QGroupBox? Можно ли это сделать, не создавая наследника? А если наследник нужен, то как сделать цвет изменяемым? Название: Re: Как изменить цвет QGroupBox? Отправлено: kambala от Сентябрь 16, 2013, 16:27 ui.gb->setStyleSheet("QGroupBox {background-color: red}");
Название: Re: Как изменить цвет QGroupBox? Отправлено: _OLEGator_ от Сентябрь 16, 2013, 16:40 Типичная ошибка.
Код
Название: Re: Как изменить цвет QGroupBox? Отправлено: zzzseregazzz от Сентябрь 16, 2013, 16:54 Уже пробовал
Код С ним тоже не работает. И Код тоже не работает Название: Re: Как изменить цвет QGroupBox? Отправлено: _OLEGator_ от Сентябрь 16, 2013, 16:58 Потому что должно быть так:
Код
Название: Re: Как изменить цвет QGroupBox? Отправлено: kambala от Сентябрь 16, 2013, 19:30 у меня и с и без QGroupBox {} работает (Qt 4.8.5)
Название: Re: Как изменить цвет QGroupBox? Отправлено: _OLEGator_ от Сентябрь 16, 2013, 20:27 to kambala:
предположил, что возможно с этим проблема - не было возможности проверить. у меня setPalette + setAutoFillBackground тоже работает, проверял через Designer. Название: Re: Как изменить цвет QGroupBox? Отправлено: zzzseregazzz от Сентябрь 17, 2013, 08:05 При этом с QLabel оба метода работают.
QGroupBox в моей программе помещен в QMainWindow. Если те же операции применить к главному окну (this), то цвет всех элементов успешно меняется (включая QGroupBox). Но мне надо поменять только один QGroupBox. Название: Re: Как изменить цвет QGroupBox? Отправлено: Bepec от Сентябрь 17, 2013, 08:11 Скиньте свой проект. Полностью. В архиве. С pro файлом.
Название: Re: Как изменить цвет QGroupBox? Отправлено: zzzseregazzz от Сентябрь 17, 2013, 09:04 В общем после пересборки проекта стало работать.
При этом через setStyleSheet окрашиваются также все кнопки, находящиеся в групбоксе, а через setPalette - только сам групбокс. Так и должно быть? Название: Re: Как изменить цвет QGroupBox? Отправлено: Bepec от Сентябрь 17, 2013, 09:34 Код: .QGroupBox{background-color: red} Название: Re: Как изменить цвет QGroupBox? Отправлено: kambala от Сентябрь 17, 2013, 11:17 ui.gb->setStyleSheet("QGroupBox {background-color: red}"); так не должно окрашивать дочерние элементы вообще-тоНазвание: Re: Как изменить цвет QGroupBox? Отправлено: Bepec от Сентябрь 17, 2013, 12:04 Ну именно так я понял его последнее сообщение. Ему нафиг не нужны красные кнопки :)
PS Да, это нормальное поведение. Стайлшит наследуется дочерними элементами. Палитра - не наследуется. Для ограничения наследования стайлшита используется селектор "." . Название: Re: Как изменить цвет QGroupBox? Отправлено: zzzseregazzz от Сентябрь 18, 2013, 15:26 Цитировать Для ограничения наследования стайлшита используется селектор "." Можно пример как его использовать?И еще вопрос - как окрасить только внутри рамки? Т.е. обычным способом красится весь прямоугольник с рисунка, хотя в обычной расцветке верхняя граница не видна. Цитировать _____________________ |--GroupBox---------------| | | |____________________| |