Есть ли способ присвоить уникальный ключ записи в 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);
Мне нужно назначить строке какой-то уникальный ключ, чтобы я мог проверить модель для этого ключа, и модель вернет номер строки. Какие-либо предложения.
Вы могли бы использовать setData
функция QStandardItem
для того, чтобы установить пользовательский ключ для определенной пользователем роли, например
#define MyRole Qt::UserRole + 2
myItem->setData(Qvariant(key), MyRole)
Вы можете получить данные любого индекса в вашей модели, используя data
вызов.
QVariant d = mymodel->data(anindex, 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 ;