Указание индекса в QTableView с PyQt - PullRequest
1 голос
/ 16 ноября 2011

У меня есть таблица, и я хочу видеть данные по определенной координате, скажем, Строка 2, Столбец 5. Я создаю объект QPoint с установленными значениями, но когда это преобразуется в объект QModelIndex, я получаю Строку 0и столбец 1.

Вот код:

    myQPoint = QPoint()
    myQPoint.setX(2)
    myQPoint.setY(5)
    myIndex = self.view.indexAt(myQPoint) # myIndex is a QModelIndex object
    print myQPoint.x(), myQPoint.y() # 2, 5
    print myIndex.row(), myIndex.column() # 0, 1

Согласно документам indexAt "возвращает позицию индекса элемента модели, соответствующего элементу таблицы в позиции pos в координатах содержимого."Почему же значения строк и столбцов myIndex отличаются от значений x и y myQPoint?Что я делаю неправильно?Есть ли способ просто установить значения строки и столбца объекта QModelIndex?

Спасибо!--Erin

Ответы [ 2 ]

5 голосов
/ 17 ноября 2011

Если вы хотите получить содержимое индекса в указанном столбце и строке, используйте QTableView.model().index(row, column).data().

QTableView.model(row, column) возвращает объект QModelIndex (http://doc.qt.nokia.com/latest/qmodelindex.html), который затем имеет метод QModelIndex.data(role). Вы можете указать, какую роль вы хотите (http://doc.qt.nokia.com/latest/qt.html#ItemDataRole-enum), но по умолчанию используется Qt.DisplayRole (отображать текст, который вы видите в указанном индексе, при условии, что вы не редактируете ячейку).

2 голосов
/ 17 ноября 2011

Просто чтобы выяснить, почему код в вопросе не работает:

QTableView.indexAt возвращает элемент модели в точке на экране (относительно виджета таблицы).Таким образом, QPoint(2, 5) соответствует точке два пикселя в и пять пикселей вниз от верхнего левого угла содержимого виджета таблицы - что действительно соответствует элементу модели в нулевой строке, столбце один!

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

Как упоминалось в ответе DK, способ получить данные в определенной строке / столбце - это найтииндекс в табличном представлении модель .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...