#c #qt
#c #qt
Вопрос:
Мне нужно иметь флажок, подобный элементу управления, где в отмеченных и непроверенных состояниях используется пользовательская графика. Я просмотрел все документы для QToolButton и QCheckBox, а также QIcon, но не смог найти ни одной комбинации, которая делала бы то, что я хочу.
Я просто хочу использовать один значок (на самом деле растровое изображение) в непроверенном состоянии и другой в отмеченном состоянии.
Кажется, что это должно быть легко, но решение (за исключением пользовательского элемента управления) ускользает от меня.
Я также пробовал использовать таблицу стилей и QToolButton:checked
с background-image
подобными работами, но я не могу правильно настроить макет — он не расположен / не имеет размера, как у значка.
Ответ №1:
Используйте подпункт :индикатор. приведенный ниже код отлично работает для меня…
QCheckBox::indicator {
width: 18px;
height: 18px;
}
QCheckBox::indicator:checked
{
image: url(.../Checkbox_checked_normal.png);
}
QCheckBox::indicator:unchecked
{
image: url(.../Checkbox_unchecked_normal.png);
}
QCheckBox::indicator:checked:hover
{
image: url(.../Checkbox_checked_hovered.png);
}
QCheckBox::indicator:unchecked:hover
{
image: url(.../Checkbox_unchecked_hovered.png);
}
QCheckBox::indicator:checked:pressed
{
image: url(.../Checkbox_checked_pressed.png);
}
QCheckBox::indicator:unchecked:pressed
{
image: url(.../Checkbox_unchecked_pressed.png);
}
QCheckBox::indicator:checked:disabled
{
image: url(.../Checkbox_checked_disabled.png);
}
QCheckBox::indicator:unchecked:disabled
{
image: url(.../Checkbox_unchecked_disabled.png);
}
Комментарии:
1. есть ли способ использовать значки Qt вместо импорта изображений в ресурсы?
Ответ №2:
Это должно быть введено в виде таблицы стилей. Сделайте это с помощью редактора дизайна, щелкнув правой кнопкой мыши на флажке и выбрав «Изменить таблицу стилей …».
Ответ №3:
Вы также можете включать и использовать свои значки в качестве ресурсов:
QCheckBox::indicator:checked {image: url(:/circle-green.png);}
QCheckBox::indicator:unchecked {image: url(:/circle-red.png);}