2014-10-24 4 views
1

Я новичок в QT и изучаю, как заполнять QComboBox. Я знаю о методе addItem() QComboBox, чтобы добавить новый элемент. Но в моем случае это не работает. Ниже приведена часть моего кода.Как динамически добавлять элемент в QComboBox с QSqlQueryModel

QSqlQuery q; 

    q.prepare("SELECT fname from Person"); 

    if(q.exec()) 
    { 
     QSqlQueryModel *model = new QSqlQueryModel(this); 

     model->setQuery(q); 

     ui->comboFName->setModel(model); 

     db.close(); 
    } 

    QString item = "XYZ"; 

    ui->comboFName->addItem(item); 

Мой QComboBox становится заполняется данными из QSqlQueryModel но ручного ввода AddItem() не работает.

ответ

1

После того, как вы установили модель UIComponent, она станет источником элементов, она будет заполнена из этой модели.

QSqlQueryModel предназначен только для чтения, поэтому вы не можете его изменить (ссылка на класс http://qt-project.org/doc/qt-5/qsqlquerymodel.html).

Вы не можете добавить элементы в эту модель результатов SQL.

Чтобы добавить свои элементы, вы должны очистить (функцию clear()) модель, а затем использовать функцию AddItem.

Надеюсь, это поможет.