有没有办法为QStandardItemModel
中的条目分配唯一键,以便我们可以检查是否存在该键。如果它存在,我们会得到相关的QstandardItem
?
更新
这是我想要做的。我的表中有3列,所以我有3 QStandardItem
。
这是我正在使用的代码:
QStandardItem* item0 = new QStandardItem("Column1");
QStandardItem* item1 = new QStandardItem("Column2");
QStandardItem* item2 = new QStandardItem("Column3");
现在我的模型被称为model
,我将这些附加到我的模型
moddel->setItem(0,0,item0);
moddel->setItem(0,1,item1);
moddel->setItem(0,2,item2);
我需要为行分配一些唯一键,以便我可以检查该键的模型,模型将返回行号。任何建议。
答案 0 :(得分:2)
您可以使用QStandardItem
#define MyRole Qt::UserRole + 2
myItem->setData(Qvariant(key), MyRole)
函数来为用户定义的角色设置自定义键,例如
QVariant d = mymodel->data(anindex, MyRole)
您可以使用setData
调用获取模型中任何索引的数据。
{{1}}
编写一个检查密钥是否存在的函数应该是直接的。
答案 1 :(得分:1)
pnezis的答案解决了密钥的存储问题,但没有解决模型中QStandardItem
的访问问题。我通过子类QStandardItem
解决了使用QStandardItem
存储数据的问题,因为我需要存储大量复杂数据。
要从模型中获取QStandardItem
,您需要使用行/列创建QModelIndex
实例,然后调用itemFromIndex(index)
在模型上。
我的例子来自选择回调。
QModelIndex& selectedItem = itemsSelected.front();
QStandardItemModel* model = reinterpret_cast<QStandardItemModel*>(tableView->model());
if (nullptr == model)
return;
QStandardItem *item = model->itemFromIndex(selectedItem);
if (nullptr == item)
return ;