Я новичок с программированием Qt Model/View и прочитал Editable Tree Model Example в документации Qt. Хорошей особенностью в этом примере является то, что один объект (TreeItem
) инкапсулирует две части информации, которые позже отображаются в одной строке, содержащей два столбца (name
и description
), благодаря переопределению QModelIndex QAbstractItemModel::index
и QVariant QAbstractItemModel::data
.Может ли два объекта QStandardItem обрабатывать разные атрибуты от одного и того же объекта?
Теперь у меня есть пользовательский класс (например, Foo
), содержащие две части информации (Foo::m_name
и Foo::m_description
), что я хочу, чтобы отобразить в одной строке, содержащей два столбца, но вместо подклассов QAbstractItemModel
я хочу подкласс QStandardItemModel
, потому что он обладает некоторой функциональностью. Тем не менее, кажется, я должен создать два объекта QStandardItem
для каждого из моих объектов Foo
, один для обработки m_name
, а другой для обработки m_description
. Как я могу сохранить один объект Foo
в памяти и использовать эти два объекта QStandardItem
?
В моем вопросе есть неявное предположение, что необходимо создать объект QStandardItem
для каждой пары (строки, столбца). Пожалуйста, дайте мне знать, если это неправильно.
я объявил 'Q_DECLARE_METATYPE (Foo *) 'и сохранил' QVariant 'в' QStandardItem', чтобы избежать хранения объекта 'Foo'. Тем не менее, это все равно привело к созданию двух объектов 'QStandardItem' для каждого объекта Foo, и я надеялся, что существует некоторое решение для решения проблемы. –
jmborr
Как я уже сказал, «QStandardItemModel» использует один «QStandardItem» для каждой ячейки в качестве своего принципа проектирования. Его вариант использования - хранить данные в модели, а не быть интерфейсом к данным, хранящимся в другом месте. –