Прикрепление QGraphicsView к углу экрана

у меня есть QGraphicsView это делает мою игру Этот вид заполняет весь экран в любое время. В правом верхнем углу у меня есть еще один QGraphicsView которую я использую как мини-карту; это сидит над видом на игру. Я хочу, чтобы эта мини-карта была закреплена в правом верхнем углу экрана, всегда сохраняя свой размер. Этот код почти работает, за исключением того, что левая сторона мини-карты никогда не меняется (что быть ожидаемым).

void MainWindow::resizeEvent(QResizeEvent *event)
{
mainWindow->graphicsView->resize(event->size().width(), event->size().height());
QRect newRect(mainWindow->miniMapGraphicsView->geometry());
newRect.setRight(event->size().width() - 20);
mainWindow->miniMapGraphicsView->setGeometry(newRect);
}

Как я могу это сделать?

1

Решение

Когда вы хотите расположить виджеты определенным образом, макеты обычно являются лучшим способом сделать это.

Добавить QFormLayout на ваш graphicsView и установить его layoutDirection в Qt::RightToLeft, Затем добавьте свой miniMapGraphicsView к макету. Редактируя свойства мини-карты, установите ее горизонтальное и вертикальное sizePolicy в Fixed и установить его minimumSize а также maximumSize до размеров, которые вы хотели бы, чтобы это было.

Альтернативой было бы использовать QGridLayout и используйте горизонтальные и вертикальные распорки, чтобы протолкнуть мини-карту в любой угол обзора.

НОТА: Макеты имеют поля, установленные по умолчанию, поэтому, если вы хотите, чтобы ваши виджеты выравнивались по краям, обнулите их.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]