这是因为在获取QWidget所在的单元格行和列时,使用了QTableWidget::row()
函数,该函数的参数类型必须为QTableWidgetItem *
。而当前使用的参数类型为QWidget *
,需要将其转换为QTableWidgetItem *
类型。
修改代码如下:
void MyWidget::onButtonClicked() {
// 获取发送信号的QPushButton对象
QPushButton *button = qobject_cast<QPushButton *>(sender());
if(button)
{
// 获取QPushButton所在的QWidget对象
QWidget *widget = button->parentWidget();
if(widget && qobject_cast<QTableWidget *>(widget->parentWidget()))
{
// 获取QWidget所在的单元格行和列
QTableWidget *tableWidget = qobject_cast<QTableWidget *>(widget->parentWidget());
int row = tableWidget->row(tableWidget->itemAt(widget->pos())); // 将QWidget转换为QTableWidgetItem
int column = tableWidget->column(tableWidget->itemAt(widget->pos()));
// TODO:处理单元格被点击的操作
}
}
}