Есть окно с кастомными виджетами-диаграммами и виджетами-временным-шкалами: Изначально размер виджета-диграммы задаётся в конструкторе следующим образом относительно своего парента — скролла, в котором виджет находится:
setGeometry(0, 0,
max<int>(static_cast<int>(outputData->maxArrivingTime() / dialog->commonSAGridSpacing * dialog->commonSAScale) + 20,
parent->width()),
max<int>(static_cast<int>(outputData->outputSettings.flowQuantity * (rowHeight + 1)),
parent->height()));
Затем кнопками управления шагом сетки по времени (gridaSpacing) и масштабом в пикселях (scale) диаграмма перерисовывается, ей задаётся геометрия в методе перерисовки:
setGeometry(0, 0,
max<int>(static_cast<int>(outputData->maxArrivingTime() / dialog->commonSAGridSpacing * dialog->commonSAScale) + 20,
dynamic_cast<QScrollArea *>(parent())->width()),
max<int>(static_cast<int>(outputData->outputSettings.flowQuantity * (rowHeight + 1)),
dynamic_cast<QScrollArea *>(parent())->height()));
Постепал с точками останова, геометрия виджета становится больше геометрии скролла, паренты указаны аккуратно, однако виджет не скроллится, скролл-бары не появляются, хотя setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded).
Изначально не было у scroll area метода setWidget(), но был руками у виджета установлен parent — нужная scroll area. Метод setWidget() уведомляет родителя о том, что ребёнок изменил размер, заставляя родителя анализировать размер ребёнка относительно своего.
Также в методе перерисовки был метод setGeomtry был заменён на resize.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости