How to get cell value from selected row (QTableView)?
Asked Answered
C

2

13

I have a QTableView and I need to the get value (string) from the first cell of the selected row (any cell on the row could be selected). But I need this value only if exactly one row was selected.

I thought - I need to get index of the selected row and then get the value of the first сell on that line, but I couldn't find a way to do it.

Confer answered 29/7, 2012 at 16:7 Comment(0)
P
16
myTableView->selectionModel()->currentIndex().row()

Will give you the index of the currently selected row. From there you should have enough information to look up the row/column pair in your model.

Also, QItemSelectionModel::selectedRows() will let you know how many rows are selected.

Padgett answered 29/7, 2012 at 16:41 Comment(3)
I am able to get the row index, but how to get the value at the first column for example ?Churl
An old question by @Suda.nese but for anyone else who needs to get the value: QModelIndex index=myTableView->selectionModel()->currentIndex(); to get the index, then QVariant value=index.sibling(index.row(),index.column()).data(); will get the value of the clicked cell.Bats
Extremely helpful, can confirm that this works on PyQt5 as wellRosen
O
11

Python Code will look like :

    self.tableView.clicked.connect(self.on_Click)

When User Click on Table Cell the on_Click() method is invoked

    def on_Click(self):
        # #selected cell value.
        index=(self.tableView.selectionModel().currentIndex())
        # print(index)
        value=index.sibling(index.row(),index.column()).data()
        print(value)

Explanation.

"value" contains the cell value of the selected cell.

       index.row() # gives current selected row.
       index.column() # gives current selected column.
       index.sibling(index.row(),index.column()).data() # will return cell data
Octangular answered 18/12, 2019 at 7:35 Comment(3)
Your answer pointed me in the right direction and helped me solve an issue i was having for months getting tool tips to work from my qtableview qsqltablemodel index. the only mod i had to do was to use cause i had tried this index.sibling(index.row(),index.column()).data() with the column set to 5 but it did not work index.sibling(index.row(),index.column(5)).data() So i ended up using this which worked to get the value from the same index row but column5 of the selection. index.siblingAtColumn(5).data()Truitt
Works like a charm..!Kano
index.siblingAtColumn(5).data() worked for me on PyQt6 also!Rhizo

© 2022 - 2024 — McMap. All rights reserved.