у меня есть 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);
}
Как я могу это сделать?
Когда вы хотите расположить виджеты определенным образом, макеты обычно являются лучшим способом сделать это.
Добавить QFormLayout
на ваш graphicsView
и установить его layoutDirection
в Qt::RightToLeft
, Затем добавьте свой miniMapGraphicsView
к макету. Редактируя свойства мини-карты, установите ее горизонтальное и вертикальное sizePolicy
в Fixed
и установить его minimumSize
а также maximumSize
до размеров, которые вы хотели бы, чтобы это было.
Альтернативой было бы использовать QGridLayout
и используйте горизонтальные и вертикальные распорки, чтобы протолкнуть мини-карту в любой угол обзора.
НОТА: Макеты имеют поля, установленные по умолчанию, поэтому, если вы хотите, чтобы ваши виджеты выравнивались по краям, обнулите их.
Других решений пока нет …