Qt checkbox / toolbutton с пользовательскими / отличными галочками / непроверенными значками - PullRequest
7 голосов
/ 11 мая 2011

Мне нужно иметь флажок, подобный элементу управления, где отмеченные и непроверенные состояния используют пользовательскую графику. Я просмотрел все документы для QToolButton и QCheckBox вместе с QIcon, но не смог найти ни одной комбинации, которая бы делала то, что я хочу.

Я просто хочу использовать один значок (на самом деле растровое изображение) в непроверенном состоянии, а другой - в отмеченном состоянии.

Такое ощущение, что это должно быть легко, но решение (за исключением пользовательского элемента управления) ускользает от меня.


Я также пытался использовать таблицу стилей, и QToolButton:checked с видом работ background-image, но я не могу получить правильный макет - он не позиционируется / не измеряется, как со значком.

Ответы [ 4 ]

20 голосов
/ 11 мая 2011

Использовать подпункт индикатора ::. код ниже работает отлично для меня ...

 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);
  }
3 голосов
/ 10 января 2014

Это должно быть введено как таблица стилей.Сделайте это в редакторе дизайна, щелкнув правой кнопкой мыши по флажку и выбрав «Изменить таблицу стилей ...».

0 голосов
/ 10 июля 2019

Вы также можете включать и использовать свои иконки в качестве ресурсов:

QCheckBox::indicator:checked {image: url(:/circle-green.png);}
QCheckBox::indicator:unchecked {image: url(:/circle-red.png);}
0 голосов
/ 12 июня 2019

Спасибо за помощь!Для использования в Maya я использовал:

from PySide2 import QtWidgets
import os
ICON = os.path.join(os.path.dirname(__file__), '_icons//').replace("\\", "//")

ui.setStyleSheet("""
QGroupBox::indicator {width: 14px; height: 14px;}
QGroupBox::indicator:checked {image: url(""" + ICON + """arrow_down.png);}
QGroupBox::indicator:Unchecked {image: url(""" + ICON + """arrow_right.png);}
QGroupBox::indicator:checked:hover {image: url(""" + ICON + """arrow_down_hover.png);}
QGroupBox::indicator:Unchecked:hover {image: url(""" + ICON + """arrow_right_hover.png);}
""")

Замена обратной косой черты на прямую косую черту очень важна, так как ваше изображение не будет отображаться, если путь не будет унифицирован таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...