如何从选定行(QTableView)中获取单元格值?

12

我有一个 QTableView,我需要从所选行的第一个单元格中获取值(字符串),但只有当确切地选择了一行时才需要这个值。

我认为 - 我需要获取所选行的索引,然后获取该行上第一个单元格的值,但我找不到如何做到这一点。

2个回答

16
myTableView->selectionModel()->currentIndex().row()

这将给出当前选定行的索引。从那里,您应该有足够的信息在模型中查找行/列对。

另外,QItemSelectionModel::selectedRows() 将告诉您有多少行被选中。


2
我能够获取行索引,但是如何获取第一列的值呢? - McLan
4
一个老问题,由 @Suda.nese 提出,但对于任何需要获取值的人来说都是有用的:QModelIndex index=myTableView->selectionModel()->currentIndex(); 以获取索引,然后 QVariant value=index.sibling(index.row(),index.column()).data(); 将获取所点击单元格的值。 - JBES
非常有帮助,可以确认这也适用于PyQt5。 - dtasev

10

Python代码将如下所示:

    self.tableView.clicked.connect(self.on_Click)
当用户点击表格单元格时,将调用on_Click()方法。
    def on_Click(self):
        # #selected cell value.
        index=(self.tableView.selectionModel().currentIndex())
        # print(index)
        value=index.sibling(index.row(),index.column()).data()
        print(value)

解释。

"value" 包含所选单元格的单元格值。

       index.row() # gives current selected row.
       index.column() # gives current selected column.
       index.sibling(index.row(),index.column()).data() # will return cell data

2
你的回答指引了我正确的方向,帮助我解决了一个困扰我几个月的问题-让工具提示从我的qtableview qsqltablemodel索引中正常工作。我唯一需要修改的是使用 index.siblingAtColumn(5).data()因为我之前尝试了这种方式 index.sibling(index.row(),index.column()).data()但是将列设置为5并没有成功。 index.sibling(index.row(),index.column(5)).data()所以我最终使用了前者,可以在相同的索引行但是选择了第五列来获取值。 - Mike R
运行得像魔法一样..! - T.SURESH ARUNACHALAM
index.siblingAtColumn(5).data() 在 PyQt6 上也适用! - zeroalpha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接