PyQt5 - индексировать QListView, который использует список QStringListModel - PullRequest
0 голосов
/ 10 июля 2019

Цель состоит в том, чтобы обнаруживать индекс элемента всякий раз, когда пользователь щелкает элемент в списке.

Пример:

A
B
C
D
E

Если пользователь нажимает на C, то я хотел бы получитьэтот индекс из list().

Пытался напрямую распечатать переменную элемента, но я получаю этот вывод в командной строке:

[<PyQt5.QtCore.QModelIndex object at 0x0416CA70>]

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5       import QtWidgets, QtGui, QtCore
from PyQt5.QtGui import QBrush, QColor 

class Widget(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        lay = QtWidgets.QVBoxLayout(self)

        self.listView = QtWidgets.QListView()
        self.label    = QtWidgets.QLabel("Please Select item in the QListView")
        lay.addWidget(self.listView)
        lay.addWidget(self.label)

        model = QStringListModel()
        textList = list()
        textList = ["Itemname1", "Itemname2", "Itemname3", "Itemname4", "Itemname5", "Itemname6", "Itemname7", "Itemname8"]
        model.setStringList(textList)
        self.listView.setModel(model)        

        self.listView.clicked[QtCore.QModelIndex].connect(self.on_clicked)

    def on_clicked(self, index):
        item = self.listView.selectedIndexes()
        print(item)

if __name__ == '__main__':

    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

Вывод [<PyQt5.QtCore.QModelIndex object at 0x0416CA70>], но я хочуцелое число.

...