In this article I describe how you can get the position (row and column) of a Widget in a Cell, or to be precise, how to get row and column of a QWidget in a QTableWidget. This is specially useful in case you have a button or any other widget and you want to perform a task specific to that widget when it is pressed or triggered in any way.
First of all, if you do not already have the widget in a variable then try to do that first. Here I assume that you are using signals and slots, if that is the case you can get the widget using sender() function and type-casting. Let’s say you have a widget named details_btn and a table named some_table:
QWidget *details_btn = (QWidget*)sender();
Then you can just simply compare the cellWidget items with your widget and see if any one of them matches yours:
for (int i = 0; i < ui->some_table->rowCount(); i++)
{
for (int j = 0; j < ui->some_table->columnCount(); j++)
{
if (ui->some_table->cellWidget(i, j) == details_btn)
ui->some_table->setCurrentCell(i, 0);
}
}