Является ли создание пользовательской модели способом доступа к данным в таблице по имени?

#c #qt #qt4

#c #qt #qt4

Вопрос:

Допустим, у меня есть QTableWidget с 10 столбцами. Я устанавливаю данные в таблице с помощью

   QTableWidgetItem* textItem1 = new QTableWidgetItem;
  textItem1->setData(Qt::DisplayRole, 20);
  this->tableWidget->setItem(row, col, textItem1);
 

Проблема в том, что если я изменю порядок или названия столбцов в таблице с помощью QtDesigner, мне придется просмотреть свой код и изменить все номера столбцов. Я бы предпочел сделать что-то вроде этого:

   QTableWidgetItem* textItem1 = new QTableWidgetItem;
  textItem1->setData(Qt::DisplayRole, "Smith");
  this->tableWidget->setLastName(row, textItem1);
 

чтобы добавить «Smith» в столбец «LastName», не нужно знать, какой индекс столбца LastName в настоящее время. Можно ли сделать это с помощью пользовательской модели? Я заглянул в QAbstractTableModel, но я не понимаю, как обеспечить именованный доступ к данным? Кто-нибудь может кратко объяснить, как это можно сделать? И если это разумная / обычная вещь, которую нужно сделать?

Спасибо.

Ответ №1:

Я опубликовал пример использования QAbstractTableModel:

http://programmingexamples.net/index.php?title=Qt/ModelView/QAbstractTableModel

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