Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: AlexFAV от Декабрь 01, 2010, 16:09



Название: Изменение "внешности" QRadioButton
Отправлено: AlexFAV от Декабрь 01, 2010, 16:09
Здравствуйте!
Мне нужно сделать группу QRadioButton (или любых других кнопок) так, чтобы получилось что-то вроде этого:
(http://www.loadpicture.ru/images/buttons.gif)
Главное - это зеленая лампочка вместо точки. Остальное (границы, квадратная форма лампочки) - вторично.
Подскажите, пожалуйста, как это проще сделать.

P.S.: еще вопрос - как сделать QRadioButton такими (подозреваю, что для этого нужно вызвать какой-то один метод, но вот какой?):
(http://asoneofus.narod.ru/qt/qbttngrp-m.png)


Название: Re: Изменение "внешности" QRadioButton
Отправлено: whirlwind от Декабрь 01, 2010, 16:52
верхней картинки не видно

на нижней -- http://doc.qt.nokia.com/4.7/qmotifstyle.html

в принципе, изменить способ отрисовки радиобаттона можно, создав собственный наследник QStyle (вот типа как здесь http://doc.qt.nokia.com/4.7/qstyle.html#creating-a-custom-style),


Название: Re: Изменение "внешности" QRadioButton
Отправлено: CL0NE от Декабрь 01, 2010, 17:24
http://doc.qt.nokia.com/4.7/stylesheet-reference.html


Название: Re: Изменение "внешности" QRadioButton
Отправлено: AlexFAV от Декабрь 01, 2010, 18:46
Спасибо за ответы.


http://doc.qt.nokia.com/4.7/stylesheet-reference.html
Как раз то, что надо. Вот только не получилось. У меня Qt Creator 1.3.0 основан на Qt 4.6.0 - возможно в нем еще не реализовано? Или я что-то делаю не так...

Вот код:
Код:
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    a.setStyleSheet("QRadioButton::indicator { width: 10px; height: 10px;}");
    a.setStyleSheet("QRadioButton::indicator::checked { image: url(:/images/radiobutton_checked.png); }");
    a.setStyleSheet("QRadioButton::indicator::unchecked { image: url(:/images/radiobutton_unchecked.png); }");
    MainWindow w;
    w.setWindowState( Qt::WindowFullScreen );
    w.show();
    return a.exec();
}

Вместо "radiobutton_checked.png" - стандартный индикатор, вместо "radiobutton_unchecked.png" - пустота. ???


Название: Re: Изменение "внешности" QRadioButton
Отправлено: crossly от Декабрь 01, 2010, 19:51
а что в файле ресурсов??


Название: Re: Изменение "внешности" QRadioButton
Отправлено: AlexFAV от Декабрь 01, 2010, 20:22
а что в файле ресурсов??
Я и не знал, что такое файл ресурсов  :-\ Спасибо - теперь "radiobutton_unchecked.png" отрисовывается, однако вместо "radiobutton_checked.png" - по-прежнему стандартный индикатор... Причем, если поменять в коде местами эти 2 строки, ситуация поменяется на противоположную. Видимо, нужно как-то их объединить, но как... ???


Название: Re: Изменение "внешности" QRadioButton
Отправлено: BRE от Декабрь 01, 2010, 20:24
Видимо, нужно как-то их объединить, но как... ???
Точнее это нужно устанавливать одним вызовом setStyleSheet.


Название: Re: Изменение "внешности" QRadioButton
Отправлено: AlexFAV от Декабрь 01, 2010, 20:39
BRE, в этом-то и был вопрос: как это сделать? Я пробовал - не получилось. Сейчас попробовал еще раз - и все получилось!!! Всем огромное спасибо - ВОПРОС РЕШЕН.
Код:
    a.setStyleSheet( "QRadioButton::indicator { width: 10px; height: 10px;}"
                     "QRadioButton::indicator::unchecked { image: url(:/images/radiobutton_unchecked.png); }"
                     "QRadioButton::indicator::checked { image: url(:/images/radiobutton_checked.png); }"
                   );