一. 获取表格项像素坐标
在Qt
中,可以通过QWidget
的mapToGlobal()
函数和QPoint
的构造函数来获取某一QTableWidgetItem
的像素坐标。具体步骤如下:
- 获取要获取像素坐标的
QTableWidgetItem
,假设它的指针为item
。 - 调用
item
的tableWidget()
函数获取包含它的QTableWidget
对象,假设它的指针为tableWidget
。 - 调用
tableWidget
的viewport()
函数获取包含表格内容的视口区域,假设它的指针为viewport
。 - 调用
item
的row()
和column()
函数获取它在表格中的行列索引,假设它们分别为rowIndex
和columnIndex
。 - 调用
viewport
的visualItemRect()
函数获取item
在视口中的矩形区域,假设它的返回值为rect
。 - 调用
viewport
的mapToGlobal()
函数将rect
转换为全局像素坐标,假设转换后的坐标为globalPos
。 - 根据
rowIndex
和columnIndex
计算出item
的像素坐标,假设它的像素坐标为itemPos
。
QTableWidgetItem* item = tableWidget->item(rowIndex, columnIndex);
QWidget* viewport = tableWidget->viewport();
QRect rect = viewport->visualItemRect(item);
QPoint globalPos = viewport->mapToGlobal(rect.topLeft());
QPoint itemPos(globalPos.x() + 1, globalPos.y() + 1); // 加上一个像素的偏移量
其中,加上一个像素的偏移量是由于visualItemRect()
函数返回的矩形区域不包括左上角的边框线,因此需要将像素坐标向右下方移动一个像素才能得到准确的位置。