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 によって作成されたデータを返します。ユーザーが項目をクリックして QListView に移動するため、row[0] (table_user の id 列) も格納する必要があります。このIDをキャプチャしたい。前もって感謝します。

4

1 に答える 1

4

QStandardItem では、さまざまな役割のデータを で保存できますsetData(data, role)。格納されたデータは によって返されdata(role)ます。

Roles >= 256 (0x100) は UserRoles です。ドキュメントを参照してください

したがって、IDを保存できます

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 に答える