Не работает скроллинг у QWidget

131
25 февраля 2019, 09:10

Есть окно с кастомными виджетами-диаграммами и виджетами-временным-шкалами: Изначально размер виджета-диграммы задаётся в конструкторе следующим образом относительно своего парента — скролла, в котором виджет находится:

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).

Answer 1

Изначально не было у scroll area метода setWidget(), но был руками у виджета установлен parent — нужная scroll area. Метод setWidget() уведомляет родителя о том, что ребёнок изменил размер, заставляя родителя анализировать размер ребёнка относительно своего.

Также в методе перерисовки был метод setGeomtry был заменён на resize.

READ ALSO
Перевод функции на MASM в C++

Перевод функции на MASM в C++

Учу C++ и разбирая один проект наткнулся на то что автор часть функций (основных) реализовал на MASM, а очень плохо разбираюсь в MASM, и в интернете...

170
Вызов метода одного потока из другого

Вызов метода одного потока из другого

У меня есть функция которая вызывается отдельным потоком и поток отделяется:

136
Проверка соседних ячеек массива в игре крестики-нолики

Проверка соседних ячеек массива в игре крестики-нолики

Задание: необходимо реализовать ИИ при игре в крестики-нолики на джавеСамый первый шаг рандомный выбор ячейки и проверка соседних ячеек...

132
Как форматировать массив

Как форматировать массив

Выводит эти значения, но RUB,PLN,JPY,DKK и так дальше, не форматированы

134