gpt4 book ai didi

c++ - 将 QComboBox 与 QSqlQueryModel 一起使用

转载 作者:行者123 更新时间:2023-11-30 05:38:36 26 4
gpt4 key购买 nike

为了加快 QComboBox 处理非常大的数据集,想尝试使用 QSqlQueryModel 而不是 QStandardItemModel。然而,QComboBox 中的文本数据我需要映射到一个 ID,该 ID 当前由 itemData(rowIndex, Qt::UserRole) 存储和访问。在 QSqlQueryModel 查询中将有 2 列:ID 和 Text;并且定义了 QComboBox setModelColumn(1),即 Text。

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

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 来源?

最佳答案

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

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);
}

将实现。

关于c++ - 将 QComboBox 与 QSqlQueryModel 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32672625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com