получить индекс выбранного элемента в QListView в python

self.listOfSongs = QtWidgets.QListView(self.centralwidget)
self.listOfSongs.setGeometry(QtCore.QRect(80, 160, 191, 192))
self.listOfSongs.setObjectName("listOfSongs")
self.model = QtGui.QStandardItemModel()
self.listOfSongs.setModel(self.model)
self.updateList()
def updateList(self):
   self.model.clear()
   for x in self.table:
      item = QtGui.QStandardItem(x)
      self.model.appendRow(item)

Я надеюсь, что кто-нибудь может сказать мне, как получить элемент или индекс элемента, который я выбираю, выбирая или нажимая? Использование lib pyQT5 в питоне

введите здесь описание изображения


person idan ovadia    schedule 24.10.2019    source источник


Ответы (1)


QStandardItemModel — это модель, поэтому вы можете использовать все методы QAbstractItemModel. Вы можете перебирать строки и использовать метод item() для получения QStandarItem, связанного с каждым индексом, а затем использовать метод text() QStandarItem для получения текста.

    self.listOfSongs = QtWidgets.QListView(self.centralwidget)
    self.listOfSongs.setGeometry(QtCore.QRect(80, 160, 191, 192))
    self.listOfSongs.setObjectName("listOfSongs")
    self.model = QtGui.QStandardItemModel()
    self.listOfSongs.setModel(self.model)


    for text in ["Item1", "Item2", "Item3", "Item4"]:
        it = QtGui.QStandardItem(text)
        self.model.appendRow(it)

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

def on_clicked(self, index):
    item = self.model.itemFromIndex(index)
    print (item.text())

по щелчку:

введите здесь описание изображения

person ncica    schedule 24.10.2019
comment
В итоге я сделал так: Чтобы получить данные: self.song = self.listOfSongs.currentIndex().data() Чтобы получить индекс: self.index = self.listOfSongs.currentIndex().row() tnx за ваши ответы - person idan ovadia; 25.10.2019