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");
- Или, если вы используете дизайнер, вы можете сделать это так.