Как заполнить QListView значением и отображать данные?
Я делаю форму, которая содержит 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, name из table_user, мне нужно также сохранить row[0] (столбец id в table_user), потому что когда пользователь щелкает элемент в QListView. Я хочу захватить этот идентификатор. Заранее спасибо.
1 ответ
Решение
В 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