Извлечение QStandardItem через QStandardItemModel с помощью поиска или ключа

Есть ли способ присвоить уникальный ключ записи в 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);

Мне нужно назначить строке какой-то уникальный ключ, чтобы я мог проверить модель для этого ключа, и модель вернет номер строки. Какие-либо предложения.

1

Решение

Вы могли бы использовать setData функция QStandardItem для того, чтобы установить пользовательский ключ для определенной пользователем роли, например

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

Вы можете получить данные любого индекса в вашей модели, используя data вызов.

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

Написание функции, которая проверяет, существует ли ключ, должно быть прямым.

2

Другие решения

Ответ от 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 ;
1

По вопросам рекламы [email protected]