从数据库检索后,将其他文本添加到组合框中

Add additional text to combobox after retrieving from database

本文关键字:添加 组合 文本 其他 检索 数据库      更新时间:2023-10-16

如何为每个组合框选项添加一个"键"?所以,如果下面的代码给了我一个组合框:

苹果

柠檬

樱桃

香蕉

芒果

QSqlQuery query;
QStringList Columns;
query.prepare(" SELECT * "
              " FROM "incdt_systemType" ");
query.exec();
query.first();
_SQLQuerymodel->setQuery(query);
ui->_version->setModel(_SQLQuerymodel);
ui->_version->setModelColumn(_SQLQuerymodel->record().indexOf("incdt_systemtype_code"));

我该如何在前面加1.、2.、3.、4.、5?

因此,最终结果将是一个组合框,显示:

  1. 苹果
  2. 莱昂
  3. 樱桃
  4. 香蕉
  5. 芒果

您可能已经可以通过查询做到这一点了。我只能提供Oracle SQL语法,但其他DBMS可能有类似的选项:

假设您有一个列为"name"的表"fruits",那么像这样的查询

SELECT rownum || '. ' || name FROM fruits

会成功的。

另一种选择是对QSqlQueryModel进行子类化,并重载data()方法,方法有点像这样:

QVariant MyOwnSQLQueryModel::data(const QModelIndex & item, int role ) const
{
    if( role == Qt::DisplayRole && item.column() == _nameColumnIndex )
    {
        return QString( "%1. %2" )
               .arg( item.row() )
               .arg( QSqlQueryModel::data( item, role ) );
    }
    // else: default behaviour
    return QSqlQueryModel::data( item, role );
}