Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 通过搜索或键通过QStandardItemModel检索QStandardItem_C++_Qt_Qstandarditemmodel - Fatal编程技术网

C++ 通过搜索或键通过QStandardItemModel检索QStandardItem

C++ 通过搜索或键通过QStandardItemModel检索QStandardItem,c++,qt,qstandarditemmodel,C++,Qt,Qstandarditemmodel,是否有任何方法可以为QStandardItemModel中的条目分配唯一的密钥,以便我们可以检查该密钥是否存在。如果存在,我们将获得相关的QstandardItem 更新: 这就是我要做的。我的表中有3列,所以我有3个QStandardItem。 这是我正在使用的代码: QStandardItem* item0 = new QStandardItem("Column1"); QStandardItem* item1 = new QStandardItem("Column2"); QStandar

是否有任何方法可以为
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);
我需要为一行分配一些唯一的键,这样我就可以检查模型中的该键,并且模型将返回行号。任何建议。

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

#define MyRole Qt::UserRole + 2
myItem->setData(Qvariant(key), MyRole)
您可以使用调用来获取模型中任何索引的数据


编写检查密钥是否存在的函数应该是直截了当的。

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 ;
QModelIndex&selectedItem=itemsSelected.front();
QStandardItemModel*model=reinterpret_cast(tableView->model());
if(nullptr==模型)
返回;
QStandardItem*item=model->itemFromIndex(selectedItem);
if(nullptr==项)
返回;
QModelIndex& selectedItem = itemsSelected.front();
QStandardItemModel* model = reinterpret_cast<QStandardItemModel*>(tableView->model());
if (nullptr == model)
    return;
QStandardItem *item = model->itemFromIndex(selectedItem);
if (nullptr == item)
    return ;