diff --git a/lcl/interfaces/qt/qtwidgets.pas b/lcl/interfaces/qt/qtwidgets.pas index 4b60f1d781..af24374591 100644 --- a/lcl/interfaces/qt/qtwidgets.pas +++ b/lcl/interfaces/qt/qtwidgets.pas @@ -637,6 +637,7 @@ type public function CheckState: QtCheckState; procedure setCheckState(state: QtCheckState); + procedure setTriState(AAllowGrayed: Boolean); public procedure AttachEvents; override; procedure DetachEvents; override; @@ -5937,6 +5938,11 @@ begin QCheckBox_setCheckState(QCheckBoxH(Widget), state); end; +procedure TQtCheckBox.setTriState(AAllowGrayed: Boolean); +begin + QCheckBox_setTristate(QCheckBoxH(Widget), AAllowGrayed); +end; + procedure TQtCheckBox.AttachEvents; begin inherited AttachEvents; diff --git a/lcl/interfaces/qt/qtwsstdctrls.pp b/lcl/interfaces/qt/qtwsstdctrls.pp index c1158fba5c..645061097e 100644 --- a/lcl/interfaces/qt/qtwsstdctrls.pp +++ b/lcl/interfaces/qt/qtwsstdctrls.pp @@ -1175,6 +1175,7 @@ begin //enclose the call between Begin/EndUpdate to avoid send LM_CHANGE message QtCheckBox := TQtCheckBox(ACustomCheckBox.Handle); QtCheckBox.BeginUpdate; + QtCheckBox.setTriState(ACustomCheckBox.AllowGrayed); case NewState of cbGrayed: QtCheckBox.setCheckState(QtPartiallyChecked); cbChecked: QtCheckBox.setCheckState(QtChecked); @@ -1196,6 +1197,7 @@ var QtCheckBox: TQtCheckBox; begin QtCheckBox := TQtCheckBox.Create(AWinControl, AParams); + QtCheckBox.setTriState(TCustomCheckBox(AWinControl).AllowGrayed); QtCheckBox.AttachEvents; Result := TLCLIntfHandle(QtCheckBox);