PyQt4 - QTableView - 如何循环 QTableView

Posted

技术标签:

【中文标题】PyQt4 - QTableView - 如何循环 QTableView【英文标题】:PyQt4 - QTableView - How to loop over QTableView 【发布时间】:2015-09-23 19:35:47 【问题描述】:

我试图在 python 中找到一个示例,我可以在其中循环 QTableView 的模型元素并打印整行。 我已经找到了如何循环选择的行,但没有选择行时什么都没有。

有人可以帮助我吗?无需告诉我如何创建模型以及如何将其应用于 QTableModel。我只对如何迭代行感兴趣。

【问题讨论】:

【参考方案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))

事情可能会被美化和/或以更紧凑的方式编写,但基本上就是这样。 还是我错过了什么?

【讨论】:

该算法只需少量更改即可工作。根据我的模型,我必须在以下行中包含显示角色:cell = model.getData(model.createIndex(irow, icol))。所以它必须是:cell = model.data(model.createIndex(irow, icol), QtCore.Qt.DisplayRole)。同样因为我的模型是为表和树创建的,所以 rowCount 和 columnCount 方法包含父级作为参数。由于我的模型用于表格,因此我必须通过 None。谢谢! DisplayRole 和无效的parent 通常是datarowCount/columnCount 的默认参数:doc.qt.io/qt-4.8/qabstractitemmodel.html#data 这就是我省略这些的原因...

以上是关于PyQt4 - QTableView - 如何循环 QTableView的主要内容,如果未能解决你的问题,请参考以下文章

如何在pyqt4的右侧对齐qtableview行?

如何将 QLineEdit 放入 QTableView 单元格 PyQt4?

在 qtableview pyqt4 python 中使用图像委托?

基于 PyQt4 QTableView 模型

PyQt4中的QTableView选定元素

PyQt4 qTableView 对齐