【发布时间】:2019-09-04 09:34:32
【问题描述】:
我有一个包含两种类型的数据库。假设我有动物,然后这两种类型是鸟类和鱼类。我想要一个将两者结合在一起的组合框。所以基本上你可以选择任何动物,无论是鸟还是鱼。
在组合框中,我想显示数据库中所有动物的名称,但我还想在名称旁边的每个项目中添加一些额外的数据,以用于编程。我想添加索引和类型。
在我使用 userdata 变量添加索引之前,我只有一种新类型,它应该在哪个数据库之后查询。 (请参阅 QCombobox 文档:addItem(const QString &text, const QVariant &userData = QVariant()))。所以我当时做的是:
ui.comboBox->addItem("Animal name", animal_index);
我不确定这是否是 userdata 变量的目的,但这样它就完成了我想要它做的事情。当按下 OK 按钮时,我可以读取当前数据并使用它来查询数据库中该动物的所有属性。
但我现在想要的是向组合框项添加两个额外的信息变量。这样我就知道我应该查询哪个数据库表来获取动物属性。
所以我要么希望能够做类似的事情:
ui.comboBox->addItem("Animal name", animal_index, animal type);
我预计这也需要更改当前数据过程才能实际获得第二个变量。 所以我认为更好的是使用数组/向量/结构:
ui.comboBox->addItem("Animal name", [animal_index, animal type]);
但我不确定如何将数组/向量/结构设为 QVariant。
我知道我也可以在索引中创建范围。所以所有鸟类的指数都在 0 到 999 之间,所有鱼的指数都在 1000 到 1999 之间。但这需要一些我不想要的额外数据库管理。
【问题讨论】: