1

我正在做一个包含 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,name from table_user 创建的数据,我也需要存储 row[0] (table_user 中的 id 列),因为当用户单击一个项目进入 QListView 时。我想捕获这个 ID。提前致谢。

4

1 回答 1

4

在 QStandardItem 中,不同角色的数据可以通过setData(data, role). 存储的数据由data(role).

角色 >= 256 (0x100) 是用户角色,请参阅文档

所以你可以通过

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
于 2015-03-30T18:35:37.950 回答