如何使用值填充QListView并显示数据?

时间:2015-03-26 19:37:03

标签: python pyqt qlistview qstandarditemmodel qstandarditem

我正在做一个包含QListView的表单。它使用以下代码填充数据库:

model = QStandardItemModel(self.listUser)
for row in self.SELECT_USERS_ACCOUNTS():
    item = QStandardItem(str(row[1]))
    model.appendRow(item)
self.listUser.setModel(model)

我的QListView被命名为listUser而SELECT_USERS_ACCOUNTS()函数返回由select_id创建的数据,来自table_user的名称,我需要存储row [0](table_user中的id列),因为当用户将一个项目单击进入而QListView。我想抓住这个Id。提前谢谢。

1 个答案:

答案 0 :(得分:2)

在QStandardItem中,setData(data, role)可以存储不同角色的数据。 存储的数据由data(role)返回。

角色> = 256(0x100)是UserRoles,请参阅documentation

所以你可以通过

存储id
item.setData(row[0],256)

并通过

询问
item.data(256) 

编辑31.03.2015:

for row in self.SELECT_USERS_ACCOUNTS():
    item = QStandardItem(str(row[1]))
    # add userData to item
    item.setData(row[0],256)
    # item.setData(row[2], 257) and so on if there are further columns in row
    model.appendRow(item)

self.listUser.setModel(model)
self.listUser.clicked.connect(self.getUserData)

def getUserData(self,index):
    item = self.model().item(index.row(),index.column())
    iId = item.data(256)
    # xyz = item.data(257) for further columns
    print(iId) # or do anything else