【发布时间】:2019-11-05 14:05:29
【问题描述】:
我有一个包含 ID 号列表的可编辑 QComboBox。
ID 号代表连接到系统的设备。这些设备在运行时经常被添加和删除。
可编辑组合框的目的是在其列表中包含当前附加的 ID 列表,以便于选择,但同时允许用户手动输入当前不存在的设备的 ID。此外,可以为 ID 输入空字符串。
基本上,我想为用户提供一种输入任意(或不输入)ID 的方法,以及快速选择当前连接的设备(在运行时更改)的额外好处。
我目前没有使用列表模型来维护列表,我只是使用 QComboBox 的添加和删除功能。
如果添加或删除设备,我需要不更改选择。但是,我遇到了以下问题:
- 从列表中删除当前输入的 ID(手动或通过列表选择)时,选择将更改为列表中的另一个 ID。
- 当列表为空且手动输入 ID 或根本没有输入 ID 时,将 ID 添加到列表时会更改选择。
有没有办法让从组合框中添加和删除项目永远不会修改编辑框中的选择?甚至是实现我目标的其他 UI 元素?
【问题讨论】:
-
看起来很简单:如果它是当前选择,请不要删除它。至于添加,如果当前行编辑内容不存在,则将其复制到列表中,将选择设置为该项目,然后添加新项目。您可能会重新评估您使用的控件是否合适。您似乎更希望使用下拉按钮进行简单的行编辑,该按钮会打开一个选择框,允许用户将 ID 复制到行编辑中。您可以查看组合框的属性,看看某些组合是否能满足您的需求。或者查看 qt 源代码以获取提示。
-
@kuba 好主意。我想我会做简单的编辑+下拉按钮的想法,它可以显示一个弹出菜单或其他东西,并且具有足够接近组合框的外观,这将是有意义的。谢谢。