How to get cell value from selected row (QTableView)?
19,386
Solution 1
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.
Solution 2
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
![Stals](https://i.stack.imgur.com/hxvfD.jpg?s=256&g=1)
Comments
-
Stals almost 2 years
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.
-
McLan over 8 yearsI am able to get the row index, but how to get the value at the first column for example ?
-
JBES about 6 yearsAn old question by @Suda.nese but for anyone else who needs to get the value:
QModelIndex index=myTableView->selectionModel()->currentIndex();
to get the index, thenQVariant value=index.sibling(index.row(),index.column()).data();
will get the value of the clicked cell. -
dtasev over 5 yearsExtremely helpful, can confirm that this works on PyQt5 as well
-
Mike R over 3 yearsYour 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 workindex.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()
-
T.SURESH ARUNACHALAM almost 3 yearsWorks like a charm..!
-
zeroalpha about 2 yearsindex.siblingAtColumn(5).data() worked for me on PyQt6 also!