Qt флажок / кнопка инструментов с пользовательской / отдельной проверкой / непроверенными значками

#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);}