diff --git a/lcl/interfaces/qt/qtprivate.pp b/lcl/interfaces/qt/qtprivate.pp index 31daec4910..dd6f66dd96 100644 --- a/lcl/interfaces/qt/qtprivate.pp +++ b/lcl/interfaces/qt/qtprivate.pp @@ -401,9 +401,7 @@ end; procedure TQtComboStrings.Put(Index: Integer; const S: string); begin inherited Put(Index, S); - - FOwner.removeItem(Index); - FOwner.insertItem(Index, S); + FOwner.setItemText(Index, S); end; procedure TQtComboStrings.InsertItem(Index: Integer; const S: string); diff --git a/lcl/interfaces/qt/qtwidgets.pas b/lcl/interfaces/qt/qtwidgets.pas index b068754628..b177af1c82 100644 --- a/lcl/interfaces/qt/qtwidgets.pas +++ b/lcl/interfaces/qt/qtwidgets.pas @@ -695,6 +695,7 @@ type procedure setCurrentIndex(index: Integer); procedure setMaxVisibleItems(ACount: Integer); procedure setEditable(const AValue: Boolean); + procedure setItemText(AIndex: Integer; AText: String); procedure setText(const W: WideString); override; procedure removeItem(AIndex: Integer); @@ -5833,6 +5834,18 @@ begin end; end; +procedure TQtComboBox.setItemText(AIndex: Integer; AText: String); +var + Str: WideString; +begin + if (AIndex >= 0) and (AIndex < QComboBox_count(QComboBoxH(Widget))) then + begin + Str := GetUTF8String(AText); + QComboBox_setItemText(QComboBoxH(Widget), AIndex, @Str); + end else + insertItem(AIndex, AText); +end; + procedure TQtComboBox.setText(const W: WideString); begin if FLineEdit = nil then