У меня есть какие-то данные, хранящиеся в std :: map, и мне нужно отобразить их в QTableView.
Итак, у меня есть мой класс модели из QAbstractItemModel, но я столкнулся с проблемой:
Метод «data» дает мне QModelIndex, который содержит ожидаемый номер строки в записи данных. Но так как я использую карту, а не вектор, я не могу получить к ней произвольный доступ с параметром строки.
Поэтому моя идея состояла в том, чтобы переписать метод «index», который генерирует объект QModelIndex и содержит соответствующий хэш-ключ для каждого объекта.
Но это не облегчает задачу, поскольку мне потребуется снова получить хеш-ключ по номеру строки.
Конечно, я мог бы пройтись по всей карте от begin () до end (), чтобы найти n-ую строку / элемент, но это было бы крайне неэффективно.
Есть ли у вас какие-либо советы, как правильно отобразить std :: map в QTableView?
struct Data {
...
};
std::map<int, Data> dataMapping;
QModelIndex index ( int row, int column, const QModelIndex & parent );
QVariant data ( const QModelIndex & index, int role );
Задача ещё не решена.
Других решений пока нет …