Как заполнить 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
Другие вопросы по тегам