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

标签 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() 函数返回由 table_user 中的 select id,name 创建的数据,我也需要存储 row[0] (table_user 中的 id 列),因为当用户单击某个项目时QListView。我想捕获这个ID。提前致谢。

最佳答案

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

角色 >= 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

关于python - 如何用值填充 QListView 并显示数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29287354/

相关文章:

python - 使用 Python 创建动画图形叠加层

c++ - 防止所选项目在 QListView 中超出 View

python - 如何将缓存文件图像添加到 Django HttpResponse

python-3.x - PyQt5 中的多线程

python - 从 Pandas 多重索引中删除列

python - QFrame 不以 QWidget 作为父级?

python - PyQt4 使用 setRowHidden 在 QListView 上按文本进行过滤

python - 为什么 QListView 在尝试检索文本时给我一个 NoneType ?

python - 从 TensorFlow 中高效地获取梯度?

python - Django 嵌套 URL