Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Firefox от Февраль 20, 2009, 22:29



Название: можно ли в radiobutton изменить цвет белого поля в кружке или цвет точки?и как?
Отправлено: Firefox от Февраль 20, 2009, 22:29
скажите можно ли изменить цвет белого поля в кружке у radiobutton или цвет точки?если да то подскажите как это сделать?


Название: Re: можно ли в radiobutton изменить цвет белого поля в кружке или цвет точки?и как?
Отправлено: Dendy от Февраль 20, 2009, 23:17
Рисование элементов происходит в стиле. Смотрим в исходники qwindowsstyle.cpp и ищем строку PE_IndicatorRadioButton. Находим следующее:

Код
C++ (Qt)
QColor fillColor = (down || !enabled)
   ? opt->palette.button().color()
   : opt->palette.base().color();
   p->setBrush(fillColor);

Следовательно, цвет кружочка определяется с помощью цвета QPalette::Base. Открываем Дизайнер и пробуем для радиокнопки изменить значение палитры для цвета Base. Или аналогично в коде:

Код
C++ (Qt)
QPalette palette = radioButton->palette();
palette.setColor( QPalette::Base, Qt::blue );
radioButton->setPalette( palette );


Название: Re: можно ли в radiobutton изменить цвет белого поля в кружке или цвет точки?и как?
Отправлено: spirit от Февраль 22, 2009, 16:09
из ассистанта, раздел Qt Style Sheets Examples
Цитировать
Customizing QRadioButton
The indicator of a QRadioButton can be changed using:
 QRadioButton::indicator {
     width: 13px;
     height: 13px;
 }

 QRadioButton::indicator::unchecked {
     image: url(:/images/radiobutton_unchecked.png);
 }

 QRadioButton::indicator:unchecked:hover {
     image: url(:/images/radiobutton_unchecked_hover.png);
 }

 QRadioButton::indicator:unchecked:pressed {
     image: url(:/images/radiobutton_unchecked_pressed.png);
 }

 QRadioButton::indicator::checked {
     image: url(:/images/radiobutton_checked.png);
 }

 QRadioButton::indicator:checked:hover {
     image: url(:/images/radiobutton_checked_hover.png);
 }

 QRadioButton::indicator:checked:pressed {
     image: url(:/images/radiobutton_checked_pressed.png);
 }


Название: Re: можно ли в radiobutton изменить цвет белого поля в кружке или цвет точки?и к
Отправлено: Firefox от Февраль 22, 2009, 21:09
в свойствах палитры пробовала изменять цвет Base но ничего не произошло.


Название: Re: можно ли в radiobutton изменить цвет белого поля в кружке или цвет точки?и как?
Отправлено: spirit от Февраль 22, 2009, 21:15
цвет "точки" через палитру меняется установкой цвета для QPalette::Text.


Название: Re: можно ли в radiobutton изменить цвет белого поля в кружке или цвет точки?и как?
Отправлено: pastor от Февраль 22, 2009, 21:16
Только что проверил - все ОК.

Какая версию Qt? ОС? Используемый стиль? Как меняешь: в коде или в дизайнере?

Base меняет цвет фона для "точки", Text - цвет самой точки


Название: Re: можно ли в radiobutton изменить цвет белого поля в кр
Отправлено: Firefox от Февраль 24, 2009, 22:09
Qt -   версия 4.3.4, ОС Windows XP, qt встроено в Visual Studio. NET. В свойствах ставила base красным, ну ничего не поменялось. я не вру. :-[ программно если ставлю свойство button то меня ется цвет вокруг кружка.


Название: Re: можно ли в radiobutton изменить цвет белого поля в кружке или цвет точки?и к
Отправлено: BRE от Февраль 24, 2009, 22:19
Qt -   версия 4.3.0, ОС Windows XP, qt встроено в Visual Studio. NET. В свойствах ставила base красным, ну ничего не поменялось. я не вру. :-[ программно если ставлю свойство button то меня ется цвет вокруг кружка.
Цвет точки определяется ButtonText, только помимо самой точки и у текста описания radiobutton будет этот цвет.
Посмотри на сообщение spirit, наверное проще нарисовать свои картинки для radiobutton.


Название: Re: можно ли в radiobutton изменить цвет белого поля в кружке или цвет точки?и как?
Отправлено: pastor от Февраль 24, 2009, 22:35
Qt 4.2.3, Qt 4.3.5, Qt 4.4.3, Qt 4.5.0

   
Код
C++ (Qt)
QRadioButton *btn = 0;
   for (int i = 0; i < m_colors.size(); ++i) {
       btn = new QRadioButton(m_colors.at(i), m_buttons);
       QPalette pal = btn->palette();
       pal.setColor(QPalette::Base, Qt::red);
       pal.setColor(QPalette::Text, Qt::yellow);
       btn->setPalette(pal);
       vbox->addWidget(btn);
   }



Название: Re: можно ли в radiobutton изменить цвет белого поля в кружке или цвет точки?и как?
Отправлено: BRE от Февраль 24, 2009, 22:36
Qt 4.4.3.
Проверял в дизайнере.


Название: Re: можно ли в radiobutton изменить цвет белого поля в кружке или цвет точки?и как?
Отправлено: BRE от Февраль 24, 2009, 22:55
Опять все дело в стилях.....
Попробовал стиль windows и заработал Base и Text, хотя в Oxygen используются Button и ButtonText.
Забавно...


Название: Re: можно ли в radiobutton изменить цвет белого поля в кружке или цвет точки?и как?
Отправлено: lit-uriy от Февраль 25, 2009, 03:51
2 BRE, а у тебя Qt самосборнная?
Есть такое наблюдение, если приложение собрано с использовнием Qt от сборщика ОС, то все пучком, а если руками из сырцов собирал Qt и затем приложение линковал с ней, то не всё ровно.


Название: Re: можно ли в radiobutton изменить цвет белого поля в кружке или цвет точки?и как?
Отправлено: BRE от Февраль 25, 2009, 07:22
2 BRE, а у тебя Qt самосборнная?
Нет, сборка родная от Fedora.
qt-4.4.3-10.fc10.i386


Название: Re: можно ли в radiobutton изменить цвет белого поля в кружке или цвет точки?и как?
Отправлено: Firefox от Февраль 25, 2009, 11:28
Пробовала в новай программе на форме разместила только 1 radiobutton, вставила текст как написал Dendy ничего не происходит. в свойствах в дизайнере меняла и Base и Text, тоже ничего.мало того когда в дизайнере в разделе палитры меняешь там есть окошко где все изменения показываются как выглядеть будет. и на radiobutton при изменении цветов этих свойств не меняется.



Название: Re: можно ли в radiobutton изменить цвет белого поля в кружке или цвет точки?и как?
Отправлено: spirit от Февраль 25, 2009, 11:30
а есть возможность проверить на кьюти более поздней чем 4.3.0?


Название: Re: можно ли в radiobutton изменить цвет белого поля в кружке или цвет точки?и как?
Отправлено: BRE от Февраль 25, 2009, 11:41
Пробовала в новай программе на форме разместила только 1 radiobutton, вставила текст как написал Dendy ничего не происходит. в свойствах в дизайнере меняла и Base и Text, тоже ничего.мало того когда в дизайнере в разделе палитры меняешь там есть окошко где все изменения показываются как выглядеть будет. и на radiobutton при изменении цветов этих свойств не меняется.
Складывается впечатление, что в разных стилях цвета берутся из разных ролей палитры (по крайней мере в 4.4.3, где могу проверить). Напиши какой у тебя стиль установлен.
Как писАл выше, попробуй устанавливать место Base и Text - Button и ButtonText.


Название: Re: можно ли в radiobutton изменить цвет белого поля в кружке или цвет точки?и как?
Отправлено: Firefox от Февраль 25, 2009, 11:44
СПАСИБО всем большое!!!всё работало, просто надо было сменить стиль на стиль виндовс)))по умолчанию он не стоял видимо. как только сменила стиль отображения формы всё заработало!!! ;D ;D ;D :D :D :D


Название: Re: можно ли в radiobutton изменить цвет белого поля в кружке или цвет точки?и как?
Отправлено: pastor от Февраль 25, 2009, 12:28
Firefox, конечно хорошо что получилось, но что будет с вашей программой при смене стиля? Воспользуйтесь советом spirit и используйте Style Sheet