我已经和Qt一起工作了大约一年,而且我仍然在努力使用自定义模型/视图。尤其是树状结构。
我有一个名为Account的类,它代表像帐户对象这样的网站:
class Account:
def __init__(website, name, cookies):
self.website = website # string
self.account = account # string
# list of lists:
# [ ['CookieName1', 'CookieValue1', 'Domain1', 'Path1', 'Expiration1'],
# ['CookieName2', 'CookieValue2', 'Domain2', 'Path2', 'Expiration2'] ]
self.cookies = cookies
实际上,cookie实际上是一个自定义的QNetworkCookieJar子类,但出于测试目的,它就是这种形式。
我希望模型将帐户存储在列表中,从该列表中我将能够将我想要的数据公开给视图
我想以下面的形式将这些Account对象公开给多个视图,其中我有两个视图。左边的那个只显示2列中的网站和帐户名称。右侧的视图显示左侧视图中SELECTED帐户的cookie(5列)
我正在努力找出建模的最佳方式,但我认为我需要做的是如下所示总共有7列(在本例中我有两个帐户,第一个有3个cookies,第二只有一个cookie):
[Website] [Account] [CName] [CValue] [CDomain] [CPath] [CExpires]
- Website1 Account1 (empty) (empty) (empty) (empty) (empty)
(empty) (empty) CName1 CVal1 Dom1 Path1 Exp1
(empty) (empty) CName2 CVal2 Dom2 Path2 Exp2
(empty) (empty) CName3 CVal3 Dom3 Path3 Exp3
- Website2 Account2 (empty) (empty) (empty) (empty) (empty)
(empty) (empty) CName1 CVal1 Dom1 Path1 Exp1
我会隐藏左视图中的最后5列,并隐藏右视图中的前2列和右视图上的每个selectionChanged()信号调用setRootIndex(),以选择显示cookie的正确索引。
rowCount()实现看起来像这样:
def rowCount(self, parentIdx):
# If no parent index I assume top-level row, so just return the total amount of Accounts we have
if not parentIdx.isValid():
return len(self.accounts)
# Otherwise get the Account object and return how many cookies we have
account = parentIdx.internalPointer()
return len(account.cookies)
但是我完全失去了如何实现index()和parent()。树形建模结构令我感到困惑,因为我实际上并没有在任何视图中显示树形结构。有没有更好的方法来做这个?也许代理模型?
理解正确方向的任何帮助/指导,
由于