#c #qt
#c #qt
Вопрос:
Я могу установить QCursor в центр GLWidget, даже если этот GLWidget находится внутри макета или разделителей. Однако я хочу нарисовать что-то в 2D с помощью QPainter вместо установки формы курсора — в центре экрана.
Я не могу выровнять 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));
}
}
Ответ №1:
Я думаю, проблема в том, что вы используете глобальные координаты для художника, однако он должен использовать относительные координаты. Итак, вам нужно переместить свой прямоугольник в центр окна просмотра или вашего виджета, т. Е.:
rectAim.moveCenter(rect().center());