PyQt4 - QTableView - Как перебрать QTableView

Я попытался найти пример на python, где я могу перебрать элементы модели QTableView и распечатать всю строку. Я нашел, как перебирать выбранные строки, но ничего, если строки не выбраны.

Кто-нибудь может мне помочь? Не нужно рассказывать мне, как создать модель и как применить ее к QTableModel. Меня интересует только, как перебирать строки.


person Marian    schedule 23.09.2015    source источник


Ответы (1)


Я думаю, что вы перепутали модель и представление в некоторых местах в своем вопросе ...

Но почему бы просто не получить количество строк и столбцов и не перебрать их все:

for irow in xrange(model.rowCount()):
    row = []
    for icol in xrange(model.columnCount()):
        cell = model.data(model.createIndex(irow, icol))
        row.append(cell)
    # print all elems per row
    print ', '.join(str(c) for c in row))

Возможно, что-то можно украсить и / или написать более компактно, но это в основном все. Или я что-то упускаю?

person sebastian    schedule 23.09.2015
comment
Алгоритм работает с небольшими изменениями. Согласно моей модели, мне пришлось включить роль дисплея в строку: cell = model.getData (model.createIndex (irow, icol)). Значит, это должно быть: cell = model.data (model.createIndex (irow, icol), QtCore.Qt.DisplayRole). Кроме того, поскольку моя модель была создана для таблиц и деревьев, методы rowCount и columnCount содержат родительский элемент в качестве параметров. Поскольку моя модель используется для таблицы, мне пришлось передать None. Спасибо! - person Marian; 24.09.2015
comment
DisplayRole и недопустимый parent обычно являются аргументами по умолчанию для data и _4 _ / _ 5_: doc.qt.io/qt-4.8/qabstractitemmodel.html#data Вот почему я пропустил эти ... - person sebastian; 24.09.2015