Skip to main content
 首页 » 编程设计

python之使用 PyQt 在 QTableView 中指定索引

2025年05月04日18jpfss

我有一个表,我想查看特定坐标处的数据 - 比如第 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 的行值和列值与 myQPoint 的 x 值和 y 值不同?我究竟做错了什么?有没有一种方法可以简单地设置 QModelIndex 对象的行值和列值?

谢谢! --艾琳

请您参考如下方法:

如果要获取指定列和行的索引的内容,请使用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(显示文本是您在指定索引中看到的文本,假设您没有编辑单元格)。