Как сделать QCheckBox доступным только для чтения, но не серым

Любой хороший способ сделать флажок только для чтения, но также не серый (едва видимый)

  1. я использовал setEnabled(bool) который работает, но флажок затемнен и едва читаем
  2. Я могу реагировать на сигнал переключения и сбросить состояние. Но мне понадобится своего рода флаг, чтобы определить, доступен ли флажок только для чтения, а затем сбросить состояние проверки, что означает, что мне нужно создать свой собственный CheckBox учебный класс.
  3. setCheckable тоже не работает, вообще не позволяет установить проверенное состояние:

        cb = this->ui->cb_RealWorld->isCheckable();
    this->ui->cb_RealWorld->setCheckable(true);
    this->ui->cb_RealWorld->setChecked(someValue);
    this->ui->cb_RealWorld->setCheckable(cb);
    

Поэтому лучшее, что у меня есть, — это включить / отключить и принять стиль, выделенный серым цветом.

——- Редактировать ——-

После примеры таблиц стилей Я надеялся, что смогу установить стиль отключенного флажка, как у включенного. Не удалось до сих пор, чтобы сделать это. Более конкретно: изменение значка, как в Примеры не работает для меня, может быть, потому что я использую Windows и значки не доступны по пути, как в примерах.


PS: Связано, но ответа здесь нет

Отключение QCheckbox хитрым способом
Qt — Как отключить QCheckBox при сохранении проверенного состояния?

11

Решение

Следуя ниже мой код:

this->ui->cb_RealWorld->setAttribute(Qt::WA_TransparentForMouseEvents);
this->ui->cb_RealWorld->setFocusPolicy(Qt::NoFocus);
11

Другие решения

Это решение Девопии как функция:

void SetReadOnly(QCheckBox* checkBox, bool readOnly)
{
checkBox->setAttribute(Qt::WA_TransparentForMouseEvents, readOnly);
checkBox->setFocusPolicy(readOnly ? Qt::NoFocus : Qt::StrongFocus);
}
6

По вопросам рекламы [email protected]