如何使用QSqlQueryModel动态地将Item添加到QComboBox

时间:2014-10-24 13:58:27

标签: c++ qt qcombobox

我是QT的新手并且学习如何填充QComboBox。我知道QComboBox的addItem()方法来添加新项目。但就我而言,它不起作用。以下是我的代码的相关部分。

    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()不起作用。

2 个答案:

答案 0 :(得分:2)

您应该决定是使用模型还是手动添加项目,因为使用这两种方式会导致奇怪的行为http://www.qtcentre.org/threads/15391-QComboBox-gt-setModel-gt-Strange-behaviour

答案 1 :(得分:1)

设置UIComponent的模型后,它将成为项目的来源,它将从此模型中填充。

QSqlQueryModel是只读的,因此您无法对其进行修改(类参考页http://qt-project.org/doc/qt-5/qsqlquerymodel.html)。

您无法向此SQL结果模型添加项目。

要添加项目,您必须清除(函数clear())模型,然后使用AddItem函数。

希望这会有所帮助。