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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: можно ли в radiobutton изменить цвет белого поля в кружке или цвет точки?и как?  (Прочитано 16126 раз)
Firefox
Гость
« : Февраль 20, 2009, 22:29 »

скажите можно ли изменить цвет белого поля в кружке у radiobutton или цвет точки?если да то подскажите как это сделать?
Записан
Dendy
Гость
« Ответ #1 : Февраль 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 );
Записан
spirit
Гость
« Ответ #2 : Февраль 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);
 }
Записан
Firefox
Гость
« Ответ #3 : Февраль 22, 2009, 21:09 »

в свойствах палитры пробовала изменять цвет Base но ничего не произошло.
Записан
spirit
Гость
« Ответ #4 : Февраль 22, 2009, 21:15 »

цвет "точки" через палитру меняется установкой цвета для QPalette::Text.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Февраль 22, 2009, 21:16 »

Только что проверил - все ОК.

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

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

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Firefox
Гость
« Ответ #6 : Февраль 24, 2009, 22:09 »

Qt -   версия 4.3.4, ОС Windows XP, qt встроено в Visual Studio. NET. В свойствах ставила base красным, ну ничего не поменялось. я не вру. Обеспокоенный программно если ставлю свойство button то меня ется цвет вокруг кружка.
« Последнее редактирование: Февраль 25, 2009, 11:36 от Firefox » Записан
BRE
Гость
« Ответ #7 : Февраль 24, 2009, 22:19 »

Qt -   версия 4.3.0, ОС Windows XP, qt встроено в Visual Studio. NET. В свойствах ставила base красным, ну ничего не поменялось. я не вру. Обеспокоенный программно если ставлю свойство button то меня ется цвет вокруг кружка.
Цвет точки определяется ButtonText, только помимо самой точки и у текста описания radiobutton будет этот цвет.
Посмотри на сообщение spirit, наверное проще нарисовать свои картинки для radiobutton.
« Последнее редактирование: Февраль 24, 2009, 22:49 от BRE » Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #8 : Февраль 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);
   }

« Последнее редактирование: Февраль 24, 2009, 22:46 от pastor » Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
BRE
Гость
« Ответ #9 : Февраль 24, 2009, 22:36 »

Qt 4.4.3.
Проверял в дизайнере.
« Последнее редактирование: Февраль 24, 2009, 22:38 от BRE » Записан
BRE
Гость
« Ответ #10 : Февраль 24, 2009, 22:55 »

Опять все дело в стилях.....
Попробовал стиль windows и заработал Base и Text, хотя в Oxygen используются Button и ButtonText.
Забавно...
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #11 : Февраль 25, 2009, 03:51 »

2 BRE, а у тебя Qt самосборнная?
Есть такое наблюдение, если приложение собрано с использовнием Qt от сборщика ОС, то все пучком, а если руками из сырцов собирал Qt и затем приложение линковал с ней, то не всё ровно.
Записан

Юра.
BRE
Гость
« Ответ #12 : Февраль 25, 2009, 07:22 »

2 BRE, а у тебя Qt самосборнная?
Нет, сборка родная от Fedora.
qt-4.4.3-10.fc10.i386
« Последнее редактирование: Февраль 25, 2009, 07:40 от BRE » Записан
Firefox
Гость
« Ответ #13 : Февраль 25, 2009, 11:28 »

Пробовала в новай программе на форме разместила только 1 radiobutton, вставила текст как написал Dendy ничего не происходит. в свойствах в дизайнере меняла и Base и Text, тоже ничего.мало того когда в дизайнере в разделе палитры меняешь там есть окошко где все изменения показываются как выглядеть будет. и на radiobutton при изменении цветов этих свойств не меняется.

Записан
spirit
Гость
« Ответ #14 : Февраль 25, 2009, 11:30 »

а есть возможность проверить на кьюти более поздней чем 4.3.0?
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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