我目前正在嘗試將垂直滾動條的步長調整爲可滾動和響應QVBoxLayout內部對象的高度。這樣一個滾動步驟就可以精確地滾動一個小部件。 QVBoxLayout中的所有對象都具有相同的幾何圖形。如何在響應QVBoxLayout中獲取QWidget的當前寬度?
因此,我需要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
你的問題是什麼?您輸出**的值在您獲得**時是正確的。在小部件被調整大小後,提示提示後,您可以獲取值**。 –