如何在响应式QVBoxLayout中获取QWidget的当前宽度?

时间:2016-04-06 11:10:02

标签: c++ qt size qwidget

我目前正在尝试将垂直滚动条的步长调整为可滚动和响应式QVBoxLayout内对象的高度。这样一个滚动步骤就可以精确地滚动一个小部件。 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

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

方法QWidget::height()返回窗口小部件的实际大小,而不仅仅是初始化时的大小:请参阅此answer