1

有什么方法可以为 a 中的条目分配唯一键,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);

我需要为一行分配一些唯一键,以便我可以检查该键的模型,并且模型将返回行号。有什么建议么。

4

2 回答 2

2

您可以使用 的setData功能QStandardItem为用户定义的角色设置自定义键,例如

#define MyRole Qt::UserRole + 2
myItem->setData(Qvariant(key), MyRole)

您可以通过data调用获取模型中任何索引的数据。

QVariant d = mymodel->data(anindex, MyRole)

编写一个检查键是否存在的函数应该是直截了当的。

于 2013-07-12T08:37:53.023 回答
1

pnezis 的答案解决了密钥的存储问题,而不是QStandardItem从模型中访问 a 的问题。由于需要存储大量复杂数据,因此我使用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 ;
于 2018-04-20T19:03:30.937 回答