pyqt:利用 QAbstractTableModel 生成了一个表,调用了一下 QAbstractItemModel 的 currentIndex,发现取不到第 0 行,咋回事?

2022-02-21 00:40:44 +08:00
 6167
2485 次点击
所在节点    Python
3 条回复
justou
2022-02-21 09:11:35 +08:00
你的代码不全, 应该贴一个完整的 demo, 拿来就能 debug 那种

1. 一整行被选中,尝试使用 self.tableView.currentIndex().row()获取行号应该是在一个 slot 中, 你是怎么写的?
2. 在不选中任意一行的情况下, currentIndex 是 invalid 的, row()返回-1 不是表示最后一行, 行索引的有效范围是[0, rowCount() - 1], 在处理一个 index 时注意使用 isValid()判断
6167
2022-02-21 16:33:59 +08:00
@justou 感谢提示,但是刚刚在整理代码的时候,突然发现昨天晚上的 bug 复现不出来了,currentIndex().row()也默认为-1 了
imn1
2022-02-24 20:03:18 +08:00
表格的数据行的下标从 0 开始,标题行不计入
标题行是另一个"控件",有其自有的方法属性,要用 view.header()类似的方法提取这个控件

currentIndex 仅指光标当前的行,跟选择无直接关系,所以行号就是其实际值
你想获得选择的行(可以是多行)的第一个,不是用 currentIndex ,而是用 selectedIndexes/selectedItems 类似的方法

提醒一下,无论光标还是选择,行号都是该行的真实行号,并非多个选择中的排第几个

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/835280

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX