Python 使用PyQt在QTableView中指定索引
我有一个表格,我想看到特定坐标下的数据——比如第2行第5列。我创建了一个设置了这些值的QPoint对象,但当它被转换为QModelIndex对象时,我得到了第0行和第1列 代码如下:Python 使用PyQt在QTableView中指定索引,python,pyqt,Python,Pyqt,我有一个表格,我想看到特定坐标下的数据——比如第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 myQPoi
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对象的行和列值
谢谢!
--Erin如果要获取指定列和行的索引内容,请使用
QTableView.model().index(row,column.data()
QTableView.model(行、列)
返回一个QModelIndex
对象(),该对象随后具有一个QModelIndex.data(角色)
方法。您可以指定所需的角色(),但默认值为Qt.DisplayRole
(显示文本是您在指定索引中看到的文本,假设您没有编辑单元格)。如果您想获取指定列和行的索引内容,请使用QTableView.model().index(行、列).data()
QTableView.model(行、列)
返回一个QModelIndex
对象(),该对象随后具有一个QModelIndex.data(角色)
方法。您可以指定所需的角色(),但默认值为Qt.DisplayRole
(显示文本是您在指定索引中看到的文本,假设您未编辑单元格)。仅澄清问题中的代码不起作用的原因:
QTableView.indexAt
返回屏幕上某一点的模型项(相对于表格小部件)。因此QPoint(2,5)
对应于tabel小部件内容左上角两个像素和五个像素以下的点-这确实对应于第0行第1列的模型项
因此,indexAt
可以用来获取鼠标光标下的当前模型项
正如DK在回答中提到的,获取特定行/列数据的方法是在表视图的索引中查找。只是为了澄清问题中的代码不起作用的原因:
QTableView.indexAt
返回屏幕上某一点的模型项(相对于表格小部件)。因此QPoint(2,5)
对应于tabel小部件内容左上角两个像素和五个像素以下的点-这确实对应于第0行第1列的模型项
因此,indexAt
可以用来获取鼠标光标下的当前模型项
正如DK在回答中提到的,获取特定行/列数据的方法是在表视图的索引中查找索引