gpt4 book ai didi

c++ - QCombobox 与字符串旁边的项目的附加数据

转载 作者:行者123 更新时间:2023-11-30 04:44:25 28 4
gpt4 key购买 nike

我有一个数据库,其中包含两种类型的同一事物。假设我有动物,然后两种类型是鸟类和鱼类。我想要一个将两者组合在一起的组合框。所以基本上你可以选择任何动物,一些鸟或一些鱼。

在组合框中,我想显示数据库中所有动物的名称,但我也想在名称旁边的每个项目中添加一些额外的数据,以用于编程。我想添加索引和类型。

在我使用 userdata 变量添加索引之前,但后来我只有一种类型很新,它应该查询哪个数据库。 (参见 QCombobox 文档:addItem(const QString &text, const QVariant &userData = QVariant()))。所以我当时所做的是:

ui.comboBox->addItem("Animal name", animal_index);

我不确定这是否是 userdata 变量的目的,但这样它就完成了我想要它做的事情。当按下确定按钮时,我可以读取当前数据并使用它来查询数据库中该动物的所有属性。

但我现在想要的是向组合框项添加两个额外的信息变量。这样我就知道我应该查询哪个数据库表来获取动物属性。

所以我要么希望能够做类似的事情:

ui.comboBox->addItem("Animal name", animal_index, animal type);

我预计这还需要更改当前数据过程才能实际获取第二个变量。所以我认为使用数组/vector/结构会更好:

ui.comboBox->addItem("Animal name", [animal_index, animal type]);

但我不确定如何将数组/vector/结构创建为 QVariant。

我知道我也可以在索引中设置范围。所以所有鸟的指数都在 0 到 999 之间,所有鱼的指数都在 1000-1999 之间。但这需要一些我不想要的额外数据库管理。

最佳答案

您可以从 QList 构造一个变体并将其设置为用户数据。例如:

ui.comboBox->addItem("Animal name",
QList<QVariant>() << animal_index << animal_type);

要读回项目数据,您可以这样做:

auto data = ui.comboBox->itemData(0).value<QList<QVariant>>();
assert(data.size() == 2);
auto animal_index = data.first().toInt();
auto animal_type = data.last().toInt();

关于c++ - QCombobox 与字符串旁边的项目的附加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57785545/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com