0
我使用PySide2並希望搜索QListView以獲取值並選擇該行。就像你可以在QComboBox上使用.findText(string_to_search_for)
一樣。 如何搜索Qlistview中的值並返回索引?在Qlistview中查找值的索引
一些額外的信息:
我而QListView模型是實現QAbstractTableModel的我寫的。 該模型充滿了來自數據庫的數據,第一列中的id和第二列中的數據庫項目的名稱。 QListView只顯示第二列。這是我的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 - 是一個「視圖」類,它顯示從某些「模型」類取得的數據,擴展QAbstractItemModel。你使用什麼樣的模型來爲數據提供視圖? find方法應該在您正在使用的模型類中實現。 – MihanEntalpo
顯示您的代碼。 – eyllanesc
@MihanEntalpo我正在使用QTableModel,我編輯了我的帖子以包含代碼。 –