【问题标题】:How to dynamically add Item to QComboBox with QSqlQueryModel如何使用 QSqlQueryModel 将 Item 动态添加到 QComboBox
【发布时间】:2014-10-24 13:58:27
【问题描述】:

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

【问题讨论】:

    标签: c++ qt qcombobox


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      一旦您设置了 UIComponent 的模型,它就会成为项目的来源,它将从此模型中填充。

      QSqlQueryModel 是只读的,所以你不能修改它(类参考页http://qt-project.org/doc/qt-5/qsqlquerymodel.html)。

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

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

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-20
        • 1970-01-01
        • 2023-03-23
        • 2020-01-05
        • 2012-10-29
        • 2021-04-12
        • 2019-04-07
        相关资源
        最近更新 更多