6

我正在尝试将项目添加到QComboBox使用insertItems功能如下:

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.

为什么会发生这种情况,有没有办法将此功能也添加到我的班级?

4

3 回答 3

7

使用QComboBox 的addItemsinsertItems成员函数。//请注意,接受 QStringList 参数的函数的末尾有一个s :它是 add/insert Item s

LE:不要传递你的 QStringList 的地址,该函数引用一个 QStringList 对象,而不是指针,使用:ui->QComboBox->insertItems(0, sequence_len); //no & before 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);
于 2013-06-11T12:17:19.150 回答
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.

于 2014-10-28T15:26:15.770 回答
2

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

ui->QComboBox->insertItem(0, sequence_len);
于 2013-06-11T12:25:59.263 回答