我可以将QCursor设置为GLWidget的中心,即使该GLWidget位于布局或分割器中也是如此。但是,我想用qPainter在2D中绘制一些东西而不是设置光标形状 - 在屏幕的中心。
我无法将QRect对齐到屏幕的中心 - 相同的值将椭圆放在GLWidget的右下角。为什么这些中心坐标在这两种情况下均有效?
void GLWidget::paintEvent(QPaintEvent *)
{
if (selCam->camType->val_s == "fps")
{
QPoint p = mapFromGlobal(QCursor::pos());
fpsCenter = mapToGlobal(QPoint(width() / 2, height() / 2));
//fpsCenter = 738, 549
QCursor::setPos(fpsCenter);
}
//other rendering
if (selCam->camType->val_s == "fps")
{
QRect rectAim(10, 10, 20, 20);
rectAim.moveCenter(fpsCenter);
painter.setPen(Qt::black);
painter.drawEllipse((rectAim));
}
}
答案 0 :(得分:1)
我认为问题在于你使用画家的全局坐标,但它应该使用相对坐标。因此,您必须将视角移动到视口或窗口小部件的中心,即:
rectAim.moveCenter(rect().center());