Qt: c ++: как заполнить QComboBox, используя QStringList

Я пытаюсь добавить элементы в 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-создателя, опция:(int index, const QStringList & list) не существует Итак, сначала я подумал, что это потому, что мой создатель QT не поддерживает эту функцию. Однако, что удивительно, при заполнении QComboBox непосредственно из вкладки «Дизайн» в Qt-creartor после создания виджета QComboBox, та же функция используется ui_mainwindow.h !!!

почему это происходит и есть ли способ добавить эту функцию и в мой класс?

5

Решение

использование AddItems функция-член QComboBox.

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");
ui->QComboBox->addItems(sequence_len);
5

Другие решения

не передавайте список в качестве указателя

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

Попробуй это:

//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,

1
По вопросам рекламы [email protected]