防止在修改项目列表时更改可编辑的QComboBox选择

时间:2019-06-23 15:10:15

标签: c++ qt qt5 qcombobox

我有一个可编辑的QComboBox,其中包含ID号列表。

ID号代表连接到系统的设备。设备经常在运行时添加和删除。

可编辑组合框的意图是在其列表中包含当前附加的ID列表,以便于选择,但同时允许用户手动输入当前不存在的设备的ID。另外,为ID输入一个空字符串也是有效的。

基本上,我想为用户提供一种输入任意(或不输入)ID的方法,并且可以快速选择当前连接的设备(运行时会发生变化)。

我目前没有使用列表模型来维护列表,我只是在使用QComboBox的添加和删除功能。

如果添加或删除设备,我需要选择不更改。但是,我遇到了以下问题:

  • 从列表中删除当前输入的ID(手动或通过列表选择)后,选择内容将更改为列表中的另一个ID。
  • 当列表为空并且手动输入ID或根本没有输入ID时,将ID添加到列表中后,更改选择。

有没有一种方法可以使从组合框中添加和删除项目永远不会修改编辑框中的选择?甚至其他一些可以实现我目标的UI元素?

1 个答案:

答案 0 :(得分:2)

在更新组合框之前,将当前选择的ID(或空白字符串)保存为临时文件。变量。修改组合框内容后,检查该ID是否仍存在于组合框中(例如,使用findText())。如果是这样,请用setCurrentIndex()选择它。如果没有,请使用setCurrentText()setEditText()进行设置。