Ich benutze PySide2 und möchte eine QListView nach einem Wert suchen und diese Zeile ausgewählt haben. Wie Sie können mit .findText(string_to_search_for)
auf einer QComboBox. Wie kann ich in einer Qlistview nach einem Wert suchen und den Index zurückgeben lassen?Index des Wertes in Qlistview finden
einige zusätzliche Informationen:
Das Modell meiner QListView ist die Umsetzung von QAbstractTableModel ich geschrieben habe. Das Modell ist mit Daten aus einer Datenbank gefüllt, in der ersten Spalte die ID und in der zweiten Spalte der Name des Datenbankelements. Die QListView zeigt nur die zweite Spalte an. Dies ist mein Code für das QTableModel.
from PySide2 import QtGui,QtCore
class TwoColumnTableModel(QtCore.QAbstractTableModel):
def __init__(self, row_data=[], column_data=[], parent=None):
QtCore.QAbstractTableModel.__init__(self, parent)
self.row_data = row_data
self.column_data = column_data
def rowCount(self, parent):
return len(self.row_data)
def columnCount(self, parent):
return len(self.column_data)
def flags(self, index):
return QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable
def data(self, index, role):
if role == QtCore.Qt.DisplayRole:
row = index.row()
column = index.column()
value = self.row_data[row][column]
self.dataChanged.emit(row, column, [])
return value
def headerData(self, section, orientation, role):
if role == QtCore.Qt.DisplayRole:
if orientation == QtCore.Qt.Horizontal:
if section < len(self.column_data):
return self.column_data[section]
else:
return "TEMP COL"
def insertRows(self, position, rows, data=[], parent=QtCore.QModelIndex()):
self.beginInsertRows(parent, position, position + rows - 1)
for i in range(len(data)):
columns = []
row_column1 = data[i][0]
row_column2 = data[i][1]
columns.insert(0, row_column1)
columns.insert(1, row_column2)
self.row_data.insert(position, columns)
self.endInsertRows()
return True
def removeRows(self, position, rows, parent=QtCore.QModelIndex()):
self.beginRemoveRows()
for i in range(rows):
value = self.row_data[position]
self.row_data.remove(value)
self.endRemoveRows()
return True
QListView - ist eine "View" -Klasse, die Daten aus einer "Model" -Klasse anzeigt und QAbstractItemModel erweitert. Welche Art von Modell verwenden Sie, um Ihre Ansicht mit Daten zu versorgen? Die Methode find sollte in der von Ihnen verwendeten Modellklasse implementiert werden. – MihanEntalpo
Zeigen Sie Ihren Code. – eyllanesc
@MihanEntalpo Ich benutze ein QTableModel, ich habe meinen Beitrag bearbeitet, um den Code einzuschließen. –