Qt:c ++:如何使用QStringList填充QComboBox

6

我正在尝试使用insertItems函数将项目添加到QComboBox中,如下所示:

QStringList sequence_len = (QStringList()
<< QApplication::translate("MainWindow", "1", 0, QApplication::UnicodeUTF8)
<< QApplication::translate("MainWindow", "2", 0, QApplication::UnicodeUTF8)
<< QApplication::translate("MainWindow", "3", 0, QApplication::UnicodeUTF8)
<< QApplication::translate("MainWindow", "4", 0, QApplication::UnicodeUTF8)
<< QApplication::translate("MainWindow", "5", 0, QApplication::UnicodeUTF8)
);

ui->QComboBox->insertItem(0, &sequence_len);

但是它无法工作,给我以下错误信息:
error: no matching function for call to 'QComboBox::insertItem(int, QStringList*)'

实际上,当我在我的类中写入ui->QComboBox->insertItem(以查看Qt-Creator的建议时,选项:(int index, const QStringList & list)似乎不存在。因此,起初我认为这是因为我的Qt-Creator不支持此功能。然而,令人惊讶的是,在创建QComboBox窗口小部件后直接从Qt-Creator的“设计”选项卡中填充QComboBox时,ui_mainwindow.h也使用了相同的函数。
为什么会出现这种情况?是否有一种方法将此功能添加到我的类中?
3个回答

7
使用QComboBox的addItemsinsertItems成员函数。//注意,对于带有QStringList参数的函数末尾有一个s:它是add/insert Items 注:不要传递您的QStringList地址,该函数需要一个QStringList对象的引用,而不是指针,请使用:ui->QComboBox->insertItems(0, sequence_len); //sequence_len前面没有& 填充QComboBox的完整示例(假设tr()已正确设置):
QStringList sequence_len = QStringList() << tr("1") << tr("2") << tr("3") << tr("4") << tr("5");
//add items:
ui->QComboBox->addItems(sequence_len);
//insert items into the position you need
//ui->QComboBox->insertItems(0, sequence_len);

谢谢。去掉指针并将 insertItem 替换为 addItem 可以使其正常工作。 - hashDefine
1
insertItems 也应该可以工作,是我匆忙阅读导致我指向 addItems - 然后我看到了你的错误...LE: 再次出现错误 - 它还有 insertItem_s_(应该可以工作) - Zlatomir
1
你在问题描述中正确地使用了“insertItems”,但是在代码中你使用了“insertItem”(没有s结尾)。请参考这里的文档:http://qt-project.org/doc/qt-4.8/qcombobox.html#insertItems - Zlatomir
谢谢您,我完全没有注意到缺少了“s”。这就是它无法工作的原因。 - hashDefine
@Zlatomir 我故意没有创建额外的变量来展示如何在“一行代码”中填充 QComboBox,当然,关于代码格式的最终决定取决于您。 - rutsky
@rutsky 谢谢您的编辑建议,但我认为将QStringList添加项目与QComboBox添加项目分开更清晰。 - Zlatomir

2

不要将字符串列表作为指针传递

ui->QComboBox->insertItem(0, sequence_len);

2

试试这个:

//Text that you want to QStringList
QStringList list;
list << "a" << "b" << "c";

//Instance of model type to QStringList
QStringListModel *model = new QStringListModel();
model->setStringList(list);

ui->QComboBox->setModel(model);

在这种情况下,QStringList list 可以是你在 sequence_len 中的列表。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接