Это звучит как вопрос, который задавался здесь ранее, но я не могу найти то, что я ищу.
Итак, у меня есть вертикальная компоновка, содержащая QGraphicsView. I 'Я пытаюсь реализовать для пользователя возможность изменять размер представления с учетом любого желаемого размера. Как и в MSPaint, вы можете выбрать точный размер для холста.
Когда я запускаю программу, это отлично работает в первый раз.время и по вертикали я получаю QGraphicsView точного размера, который я указал, однако, когда функция resizeCanvas вызывается во время выполнения, я не получаю тот же эффект.
Вместо этого я QGraphicsViewбудет выглядеть так же, как если бы указанные значения были больше, чем существующие (например, установка QGraphicsScene 800x600 на 400x300),
или если верно обратное (QGraphicsScene 400x300 изменяется на800x600), я получу полосы прокрутки, а не увеличенный виджет QGraphicsView.
canvasScene = new QGraphicsScene(this);
resizeCanvas(canvasWidth, canvasHeight);
void MainWindow::resizeCanvas(int x, int y) {
canvasWidth = x;
canvasHeight = y;
canvasScene->setSceneRect(100, 100, canvasWidth, canvasHeight);
updateCanvas();
}
void MainWindow::updateCanvas() {
ui->canvas->setScene(canvasScene);
}
Как мне изменить его размер?актуальный виджет?