QT QTableWidget向单元格格中填充控件,如何单击获取该控件所在的行和列

最近在使用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();
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WJsuperrunner

你的鼓励是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值