Я только что узнал о концепции модель / представление в Qt и пришел к довольно общему вопросу.
Я понял, как можно использовать модели для привязки определенных типов данных к соответствующим виджетам,Например, QAbstractListModel
может связать список с QListView
или QComboBox
.
. Особое преимущество возникает, когда несколько виджетов связаны с одними и теми же данными через общую модель, такую как QComboBox
.и несколько QListView
с, общающихся с одним и тем же, QAbstractListModel
.
Я заметил, что в демонстрациях из учебника эта ситуация всегда выбирается так, что виджеты отображают данные в той же структуре , например, записи Combo и List в позиции i
являются производными от элемента списка i
eth, а не от общего содержания данных.
Мой вопрос, как правило,как можно подойти к ситуации, когда одни и те же данные должны отображаться разными виджетами в совершенно разных структурах , то есть записях (и их нуmber) является общей функцией всего набора данных?
Чтобы привести (довольно сложный) пример, скажем, что мои data - это список списков целых чисел,
my_list = [[1,2,3], [2,3,4,5]]
и я хотел бы отобразить его с помощью двух виджетов следующим образом:
QTableView
List | Length | First Item
----------+--------+-----------
[1,2,3] | 3 | 1
[2,3,4,5] | 4 | 2
QTreeView
+ [1,2,3]
+ Length
+ 3
+ First item
+ 1
+ Left-truncated Sublists
+ [2,3]
+ Length
+ 2
+ First item
+ 2
+ Left-truncated Sublists
+ [3]
+ This list very nice because it contains no 2
+ Length
+ 1
+ First item
+ 3
+ [3]
+ This list very nice because it contains no 2
+ Length
+ 1
+ First item
+ 3
+ [2,3,4,5]
+ Length
+ 4
+ First item
+ 2
+ Left-truncated Sublists
+ [3,4,5]
+ This list very nice because it contains no 2
+ Length
+ 3
+ First item
+ 3
+ Left-truncated Sublists
+ [4,5]
+ This list very nice because it contains no 2
+ Length
+ 2
+ First item
+ 4
+ Left-truncated Sublists
[5]
+ This list very nice because it contains no 2
+ Length
+ 1
+ First item
+ 5
+ [5]
+ This list very nice because it contains no 2
+ Length
+ 1
+ First item
+ 5
+ [4,5]
+ This list very nice because it contains no 2
+ Length
+ 2
+ First item
+ 4
+ Left-truncated Sublists
+ [5]
+ This list very nice because it contains no 2
+ Length
+ 1
+ First item
+ 5
+ [5]
+ This list very nice because it contains no 2
+ Length
+ 1
+ First item
+ 5
+ there are 2 lists in total
Конечно, я не ожидаю подробного подробного ответа, но некоторые советы или ресурсы были бы хорошими, как подойти к этомуиспользуя MVC в Qt
/ PyQt
.