В настоящее время я пытаюсь настроить размер шага вертикальной полосы прокрутки на высоту объектов внутри прокручиваемого и реагирующего QVBoxLayout. Так что один шаг прокрутки точно прокручивает один виджет вниз. Все объекты внутри QVBoxLayout имеют одинаковую геометрию.Как получить текущую ширину QWidget внутри отзывчивого QVBoxLayout?
Поэтому мне нужна текущая (живая) высота одного из объектов внутри QVBoxLayout. Я уже пробовал следующие методы:
Объект инициализирован высотой 300 (не фиксированный). Затем высота настраивается динамически, изменяя размер окна, включая QVBoxLayout.
QWidget* pWidget = PointerToMyWidgetInsideQVBoxLayout;
std::cout << "height:" << pWidget->height() << std::endl; /// @todo PHIL: height gives only initial value, not current height
std::cout << "geometry-height:" << pWidget->geometry().height() << std::endl;
std::cout << "frameSize-height:" << pWidget->frameSize().height() << std::endl;
std::cout << "frameGeometry-height:" << pWidget->frameGeometry().height() << std::endl;
std::cout << "normalGeometryheight:" << pWidget->normalGeometry().height() << std::endl;
std::cout << "minimumHeight-height:" << pWidget->minimumHeight() << std::endl;
std::cout << "maximumHeight-height:" << pWidget->maximumHeight() << std::endl;
std::cout << "sizeHint-height:" << pWidget->sizeHint().height() << std::endl;
Это приводит следующий вывод:
height:300
geometry-height:300
frameSize-height:300
frameGeometry-height:300
normalGeometryheight:300
minimumHeight-height:0
maximumHeight-height:16777215
sizeHint-height:50
Большое спасибо заранее за вашу помощь!
Может быть, '' std :: cout' при каждом изменении размера виджета? – IAmInPLS
Подкласс 'QWidget' и переопределить [' resizeEvent'] (http://doc.qt.io/qt-5/qwidget.html#resizeEvent). Затем там испускают некоторый сигнал, который отправляет новый размер в качестве аргумента. Или, если вы не хотите подкласса, просто установите фильтр событий (http://doc.qt.io/qt-5/eventsandfilters.html#event-filters). – thuga
В чём проблема? Выводимые значения ** корректны в момент их получения **. Вам нужно получить значения ** после ** изменения размера виджета, подсказки подсказки. –