QRadioButton проверяет / снимает проблему в Qt

Я нахожу проблемы, связанные с проверкой / снятием флажка QRadioButton. Изображения, которые я использовал для проверки (белая точка) и снятия отметки (без белой точки), не обновляются. Моя проблема такова: я реализовал несколько QRadioButton(s). Впервые все QRadioButtons проверили false. Таким образом, изображения для этого случая без белой точки. Когда пользователь выбирает любой QRadioButton, его изображение меняется на другое, то есть изображение с белой точкой. По нажатию кнопки я сбрасываю состояние переключателей с отмеченного состояния на отключенное. Однако состояние изображений не меняется. Они остаются в проверенном состоянии. Фрагмент кода выглядит следующим образом:

Код:

if(ui->radioButtonReadOnlineData->isChecked())
    ui->radioButtonReadOnlineData->setChecked(false);
if(ui->radioButtonSavetoDBReadOfflineData->isChecked())
    ui->radioButtonSavetoDBReadOfflineData->setChecked(false);
if(ui->radioButtonViewLocalData->isChecked())
    ui->radioButtonViewLocalData->setChecked(false);
if(ui->radioButtonDateRange->isChecked())
    ui->radioButtonDateRange->setChecked(false);
if(ui->radioButtonAll->isChecked())
    ui->radioButtonAll->setChecked(false);

Изображения для каждого из QRadioButtons установлены так:

Код:

ui->radioButtonAll->setStyleSheet(
            "QRadioButton::indicator::checked { image: url(:/Resources/radio-btn-selected.png);}"
            "QRadioButton::indicator::unchecked {image: url(:/Resources/radio-btn-unselected.png);}"
            );

Любые подсказки, почему изображения QRradioButton не обновляются. Благодарю.

2 ответа

Ваша проблема, скорее всего, связана с

setAutoExclusive(BOOL)

По умолчанию все кнопки, принадлежащие одному и тому же родительскому элементу, ведут себя так, как если бы они были частью одной и той же исключительной группы кнопок. После того, как вы выбрали одну, вы не можете вернуться к тому, что все кнопки не отмечены.

Обходной путь - выяснить, какая кнопка отмечена, и для этой кнопки выполните следующие действия.

theSelectedButton->setAutoExclusive(false);
thsSelectedButton->setChecked(false);
theSelectedButton->setAutoExclusive(true);

Взгляните на эти ссылки для получения дополнительной информации:

http://developer.qt.nokia.com/forums/viewthread/5482

http://www.qtforum.org/article/19619/qradiobutton-setchecked-bug.html

Убедитесь, что ваш файл ресурсов выглядит так:

<qresource>
   <file>Resources/radio-btn-selected.png</file>
   <file>Resources/radio-btn-unselected.png</file>
</qresource>

И это правильно включено в ваше приложение.

  • Либо включить .qrc в вашем .pro файл с
 RESOURCES = myresource.qrc
  • либо создайте внешний файл двоичных ресурсов, а затем зарегистрируйте его во время выполнения с
QResource::registerResource("/path/to/myresource.rcc");
  • Или, если вы используете дизайнер, вы можете сделать это так.
Другие вопросы по тегам