С помощью простого QPushButton, если я хочу использовать пользовательские изображения, в то время как размер кнопки определяется макетом (поэтому его можно свободно масштабировать), единственная возможность - переопределить border-image
в таблице стилей. Если я добавлю изображение в качестве атрибута image
вместо border-image
, изображения не будут уменьшены.
Однако, если я использую QRadioButton и переопределю image
или border-image
, Круг переключателя остается видимым. Я не нашел способа скрыть или переопределить его.
Возможно, можно будет игнорировать метку и изменить сам значок круга. Это можно сделать, переопределив QRadioButton:indicator
, однако он не принимает border-image
, он принимает только image
, который не масштабируется.
Есть ли способ решить эту проблему, или я застрял с использованием QPushButton с setCheckable(true)
и обрабатывать другие кнопки вручную при каждом нажатии одной из них?
Я попытался указать изображение границы для метки и несуществующее изображение для индикатора:
ui->radioButton->setStyleSheet(
"QRadioButton { border-image: url(:/img/off.png) 0 0 0 0 stretch stretch; }"
"QRadioButton:checked { border-image: url(:/img/on.png) 0 0 0 0 stretch stretch; }"
"QRadioButton:pressed { border-image: url(:/img/off_pressed.png) 0 0 0 0 stretch stretch; }"
"QRadioButton:checked:pressed { border-image: url(:/img/on_pressed.png) 0 0 0 0 stretch stretch; }"
"QRadioButton:indicator:unchecked {image: url()}"
"QRadioButton:indicator:checked {image: url()}"
"QRadioButton:indicator:unchecked:pressed {image: url()}"
"QRadioButton:indicator:checked:pressed {image: url()}"
);
Проблема в том, что хотя круг теперь не виден, он все равно занимает место, поэтому изображение не заполняет все доступное пространство.