我需要将项目插入到 ComboBox 中,但要做到这一点,我需要一个 QStringList 而不是 QList。
在我的 .h 中,我有一个对象的 QList。
QList<placavideo> listaPlacavideo;
在我的 .cpp 中我有实现:
placavideo placavideo1;
placavideo1.setNome("EVGA NVIDIA GeForce RTX 2080");
listaPlacavideo.insert(0,placavideo1);
我根据另一个问题尝试了这种转换,但不起作用:
void intcomputer::on_box_placavideo_activated(const QString &arg1)
{
QStringList listaPlacavideos;
foreach(placavideo *item, listaPlacavideo)
listaPlacavideos << item;
ui->box_fonte->addItems(listaPlacavideos);
}
问题是,如何将 listaPlacavideo 中的项目插入到 QStringList 中,以便我可以将整个 QStringList 插入到 ComboBox 中?
你不能将对象命名为名称。它需要一个
QString
作为显示名称。如果您也想将对象存储在组合框中,请执行以下操作:
foreach ( plavavideo &item, listaPlacavideo ) {
ui->box_fonte->addItem( item.getName(), item );
}
这需要
placavideo
是 QVariant
可以使用的元类型。
如果
placavideo
中有获取名称的函数,例如getNome()
,那么你只需要更改一行代码即可。
void intcomputer::on_box_placavideo_activated(const QString &arg1)
{
QStringList listaPlacavideos;
foreach(const placavideo& item, listaPlacavideo)
{
listaPlacavideos << item.getNome(); // Add the name to the list, not the whole object
}
ui->box_fonte->addItems(listaPlacavideos);
}
编辑:我在
const
之前添加了 placavideo&
。这应该可以解决你的错误。
EDIT2:您应该将函数
getNome()
声明为 const。
QString getNome() const;
假设你已经加载了QList listaPlacavideo; 然后:
QStringList slist = QStringList(listaPlacavideo);
combobox.addItems(slist); // 假设 'combobox' 是 QComboBox 的名称