Qt: c++: how to fill QComboBox using QStringList

12,133

Solution 1

Use addItems or insertItems member function of QComboBox. //notice there is an s in the end for the functions that takes a QStringList argument: it's add/insert Items

LE: don't pass the address of your QStringList, the function takes a reference to a QStringList object, not a pointer, use: ui->QComboBox->insertItems(0, sequence_len); //no & before sequence_len

Complete example of filling QComboBox (considering that tr() is properly setup):

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);

Solution 2

don't pass the sting list as pointer

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

Solution 3

Try this:

//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);

In this case, QStringList list can be your list in sequence_len.

Share:
12,133
hashDefine
Author by

hashDefine

Updated on June 17, 2022

Comments

  • hashDefine
    hashDefine almost 2 years

    I am trying to add items to QComboBox using insertItems function as follow:

    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);
    

    but is not working, giving me the following error message:

    error: no matching function for call to 'QComboBox::insertItem(int, QStringList*)'
    

    Actually, when I write ui->QComboBox->insertItem( in my class to see the Qt-Creator's suggestions, the option:(int index, const QStringList & list) doesn't appear to be exist. So, at first, I thought it is because my Qt-Creator doesn't support this function. However, surprisingly, when filling the QComboBox directly from the "Design" tab in Qt-Creator after creating the QComboBox widget, the same function is being used by ui_mainwindow.h.

    why is this happening and is there is a way to add this function to my class as well?