Ответ 1
Следуя ниже моему коду:
this->ui->cb_RealWorld->setAttribute(Qt::WA_TransparentForMouseEvents);
this->ui->cb_RealWorld->setFocusPolicy(Qt::NoFocus);
Любой хороший способ сделать checkbox readonly, но также не серый > (едва заметен).
setEnabled(bool)
, который работает, но этот флажок затемлен и едва читаетсяCheckBox
. 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);
Поэтому лучше всего использовать функцию enable/disable и принять стиль с серым цветом.
------- Изменить -------
Следуя примерам стилей, я надеялся, что смогу установить флажок отключенного типа, как тот, который включен. До сих пор не удалось сделать это. Более конкретно: изменение значка, как в examples, не работает для меня, возможно, потому, что я использую Windows, и значки недоступны по пути, как в примерах.
PS: Связанный, но здесь нет ответа
Отключить QCheckbox непростым способом
Qt - Как отключить QCheckBox при сохранении состояния проверки?
Следуя ниже моему коду:
this->ui->cb_RealWorld->setAttribute(Qt::WA_TransparentForMouseEvents);
this->ui->cb_RealWorld->setFocusPolicy(Qt::NoFocus);
Это решение Devopia как функция:
void SetReadOnly(QCheckBox* checkBox, bool readOnly)
{
checkBox->setAttribute(Qt::WA_TransparentForMouseEvents, readOnly);
checkBox->setFocusPolicy(readOnly ? Qt::NoFocus : Qt::StrongFocus);
}