首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QComboBox与QSqlQueryModel的结合

QComboBox与QSqlQueryModel的结合
EN

Stack Overflow用户
提问于 2015-09-19 19:58:59
回答 1查看 634关注 0票数 1

为了加快速度,QComboBox使用非常大的数据集,希望尝试使用QSqlQueryModel而不是QStandardItemModel。但是,QComboBox中的文本数据需要映射到ID,该ID目前由itemData(rowIndex, Qt::UserRole)存储和访问。在QSqlQueryModel查询中,将有两个列: ID和Text;定义了QComboBox setModelColumn(1),即文本。

如果QSqlQueryModel必须包含ID,如何正确地子类或重新定义combobox->itemData(rowIndex, Qt::UserRole)?谁已经实现了这样的事情或知道链接到一个来源?如果我以这样的方式定义QVariant QSqlQueryModel::data(const QModelIndex & item, int role = Qt::DisplayRole)

代码语言:javascript
复制
QVariant MySqlModel::data(const QModelIndex &index, int role) const
{
    if(role == Qt::UserRole && index.column() == 1)
         return QSqlQueryModel::data(this->index(index.row(), 0), Qt::DisplayRole);

    return QSqlQueryModel::data(index, role);
}

它能工作吗,即在这种情况下,combobox->itemData(rowIndex, Qt::UserRole)是否包含ID?还是需要调查Qt的来源?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-19 22:27:44

是的,根据QComboBox代码应该可以:

代码语言:javascript
复制
QVariant QComboBox::itemData(int index, int role) const
{
    Q_D(const QComboBox);
    QModelIndex mi = d->model->index(index, d->modelColumn, d->root);
    return d->model->data(mi, role);
}

将实现这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32672625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档