如何用值填充 QListView 并显示数据?
How to populate a QListView with value and display data?
我正在制作一个包含 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() 函数 returns 数据由 select 创建,id,名称来自 table_user,我需要存储行 [0] (id列在table_user)也是因为当用户点击一个项目时会进入QListView。我想捕获这个 Id。提前致谢。
在 QStandardItem 中,不同角色的数据可以通过 setData(data, role)
存储。
存储的数据由 data(role)
.
返回
Roles >= 256 (0x100) 是 UserRoles,参见 documentation
所以你可以通过
存储id
item.setData(row[0],256)
通过
询问
item.data(256)
编辑 2015 年 3 月 31 日:
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
我正在制作一个包含 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() 函数 returns 数据由 select 创建,id,名称来自 table_user,我需要存储行 [0] (id列在table_user)也是因为当用户点击一个项目时会进入QListView。我想捕获这个 Id。提前致谢。
在 QStandardItem 中,不同角色的数据可以通过 setData(data, role)
存储。
存储的数据由 data(role)
.
Roles >= 256 (0x100) 是 UserRoles,参见 documentation
所以你可以通过
存储iditem.setData(row[0],256)
通过
询问item.data(256)
编辑 2015 年 3 月 31 日:
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