最近在使用QTableWidget,想要获取某个单元所在的行和列,一般可以使用QTableWidget的信号void cellEntered(int row, int column)
。写自己的槽函数void MySlotFun(int row, int column)
获取行和列即可。
注意:该种方法只要将鼠标放在单元格上就可以获得该单元格的行和列。
void cellEntered(int row, int column)
但是向单元格中添加控件(QPushButton、QComboBox)时,这种方法就不再有效。想要获取他们所在的行列,始终找不到一种有效的方法,最终也只能通过点击该控件的方法获取它的行和列。
具体方法如下:
将下面代码加入到对应槽函数中即可:
QComboBox* pComboBox = qobject_cast<QComboBox*>(sender());
int x = pComboBox->frameGeometry().x();
int y = pComboBox->frameGeometry().y();
QModelIndex index = ui.tableWidget->indexAt(QPoint(x, y));
int iRow = index.row();
int iCol = index.column();
QPushButton* pButton = qobject_cast<QPushButton*>(sender());
int x = pButton->frameGeometry().x();
int y = pButton->frameGeometry().y();
QModelIndex index = ui.tableWidget->indexAt(QPoint(x, y));
int iRow = index.row();
int iCol = index.column();