尽管QCursor具有相同的val,但QR中心并不是以小部件为中心?

时间:2014-07-02 16:20:58

标签: c++ qt

我可以将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));
    }
}

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为问题在于你使用画家的全局坐标,但它应该使用相对坐标。因此,您必须将视角移动到视口或窗口小部件的中心,即:

rectAim.moveCenter(rect().center());