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

最佳答案

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

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

关于c++ - 尽管QCursor具有相同的值,但QRect无法在小部件中居中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24536264/

10-12 23:57