Приветствую.
Такой вопрос, есть у меня QScrollArea, в нём QVBoxLayout, в нём куча кнопок, кнопки создаются динамически, количество их меняется по ходу работы.
Код добавления кнопки
QToolButton* btn = new QToolButton(ui.previewList);
btn->setCheckable(TRUE);
ui.buttonsLayout->removeItem(ui.buttonsSpacer);
ui.buttonsLayout->addWidget(btn);
ui.buttonsLayout->addItem(ui.buttonsSpacer);
Мне надо иногда из программы прокручивать ScrollArea так, чтобы была видна одна из кнопок и тут начинаются проблемы.
1. ui.previewList->ensureWidgetVisible(btn) не даёт никакого эффекта вообще, видимо потому что кнопки принадлежат лэйауту, а не ему.
2. если я хочу прокрутить до самого конца, то все из нижеприведённых вариантов приводят к тому, что слайдер прокручивается так, что аккуратно последняя кнопка не видна (хотя я проверил, я вначале захожу в добавление кнопок, потом вызываю прокрутку, может надо ещё что-то сделать, чтобы принудительно заставить QScrollArea пересчитать свойства своего скроллбара?
//Вариант 1
ui.previewList->verticalScrollBar()->setValue(ui.previewList->verticalScrollBar()->maximum());
ui.previewList->verticalScrollBar()->triggerAction(QAbstractSlider::SliderMove);
//Вариант 2
ui.previewList->verticalScrollBar()->setValue(ui.previewList->verticalScrollBar()->maximum() + ui.previewList->verticalScrollBar()->pageStep());
ui.previewList->verticalScrollBar()->triggerAction(QAbstractSlider::SliderMove);
//Вариант 3
ui.previewList->verticalScrollBar()->triggerAction(QAbstractSlider::SliderToMaximum);
Как правильно сделать, чтобы подобная прокрутка работала?