WedX - журнал о программировании и компьютерных науках

Найти индекс значения в Qlistview

Я использую PySide2 и хочу найти QListView для значения и выбрать эту строку. Как вы можете с .findText(string_to_search_for) в QComboBox. Как я могу найти значение в Qlistview и вернуть индекс?

некоторая дополнительная информация:

Модель моего QListView - это реализация QAbstractTableModel, которую я написал. Модель заполняется данными из базы данных, в первом столбце идентификатор и во втором столбце имя элемента базы данных. 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
18.12.2017

  • QListView - это класс представления, отображающий данные, взятые из некоторого класса модели, расширяющего QAbstractItemModel. Какую модель вы используете для подачи данных в свое представление? Метод find должен быть реализован в классе модели, который вы используете. 18.12.2017
  • Покажи свой код. 18.12.2017
  • @MihanEntalpo Я использую QTableModel, я отредактировал свой пост, чтобы включить код. 18.12.2017
  • @eyllanesc Я включил это в свой пост. 18.12.2017
  • PySide2 отличается от PyQt5 18.12.2017

Ответы:


1

В итоге я создал следующую функцию в классе QTableModel:

def find_index_of_value(self, search_string, search_column):

    for index in range(self.rowCount(None)):
        model_index = self.index(index, 1)
        index_value = self.data(model_index, search_column)
        if index_value == search_string:
            return model_index

«search_string» — это строка, которую я ищу, а «search_column» — это столбец модели, в которой я хочу найти эту строку. С возвращаемым индексом я могу использовать setCurrentIndex(index) в моем QListView и все.

07.02.2018
Новые материалы

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


Для любых предложений по сайту: [email protected]