Есть окно, наследующее QDialog. Ее интерфейс создан в Designer. В окне создан "корневой" QVBoxLayout, внутри которого размещаются все остальные элементы.
Структура окна показана
на первом скриншоте.
Размер области VideoCapture заранее неизвестен. Пока что это простая QLabel, которой программно устанавливается картинка через метод setPixmap().
Задача: после установки картинки расширить окно так, чтобы картинка была видна полностью.
В виджете картинка вставляется так:
ui->graphicsPixmapLabel->setMinimumSize(sizeOfImage.width, sizeOfImage.height);
ui->graphicsPixmapLabel->setPixmap(QPixmap::fromImage( img ));
Плюс далее я даю команды на изменение размера окна:
this->setMinimumSize(sizeOfImage.width, sizeOfImage.height);
this->adjustSize();
Да, тут нужно еще добавлять размеры уже существующих виджетов, но пока так, главное что размер окна программно увеличивается. Но при увеличении размеров окна, размер корневого QVBoxLayout не меняется! Учитывая, что он "корневой", этот лайоут должен растянуться на ширину окна. Но этого не происходит.
Выглядит это так:
см. второй скриншотНа этой картинке обезьяна - это примерно центр кадра. Видно, что кадр на самом деле больше, чем он отображается. И еще какая-то проблема, что нижний buttonBox залез на картинку, хотя в QVBoxLayout он лежит в отдельной "строке".
Я посмотрел все методы QVBoxLayout и не увидел там метода изменения размера, метода подгонки размера под вышестоящий контейнер. Создается впечатление, что с размерами Q*Layout работать невозможно, и это вроде как правильно, потому что декларируется, что он занимает все свободное пространство, выделяемое ему вышестоящим виджетом. Но почему-то после увеличения окна, он не стремится тоже увеличится.
Вопрос: как сделать увеличение QVBoxLayout вслед за увеличением размера окна?
Или, что то же самое, но с другой стороны: как увеличить размер окна так, чтобы окно полностью показывало все виджеты?