Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用PyQt在QTableView中指定索引_Python_Pyqt - Fatal编程技术网

Python 使用PyQt在QTableView中指定索引

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

我有一个表格,我想看到特定坐标下的数据——比如第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对象的行和列值

谢谢!
--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在回答中提到的,获取特定行/列数据的方法是在表视图的索引中查找索引