#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
Как вы можете видеть, данные просто хранятся в переменной-члене, и поэтому к ним можно обращаться как угодно.