[英]How do I get the size of an area of a QVBoxLayout?
這就是我的結構。 我想查找顯示的label_2或QVBoxLayout的總大小。 當我使用verticalLayout_2->width()
,我總是得到100,而verticalLayout_2->height()
總是返回30。它設置為expanding,所以我認為它將填滿該區域,根據Qt Creator的說法是385x379。
無論窗口大小和我認為它將擴展到的區域如何,執行label_2-width()
和label_2-height()
也會導致100x30。
運行小部件的構造函數后,視覺上沒有任何操作。 setupUi
調用發生在構造函數中。 真正的工作發生在事件循環開始時。
真正的問題是您不應該在任意時間點檢查大小。 您應該在每次更改時進行檢查。 為此,您需要自己的布局。 它所setGeometry
就是從現有布局派生並重新實現setGeometry
。 每當父窗口小部件或父布局調整給定布局的大小時,都會調用此方法。 那是唯一正確的方法,不需要任何技巧即可完成。
例如,以下類可用於在存在新幾何圖形時發出信號:
class SigBoxLayout : public QBoxLayout {
Q_OBJECT
protected:
void setGeometry(const QRect & r) Q_DECL_OVERRIDE {
if (r != geometry()) emit hasNewGeometry(r);
QBoxLayout::setGeometry(r);
}
public:
SigBoxLayout(QBoxLayout::Direction dir, QWidget * parent = 0) :
QBoxLayout(dir, parent) {}
Q_SIGNAL void hasNewGeometry(const QRect & r);
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.