2014-01-29 33 views
2

我現在已經用Qt佈局系統深入工作了兩年。在此之後,我遇到了SizePolicies和Layouts問題。我通常找到解決方案,但從來沒有真正明白我在做什麼。QSizePolicy真正的含義,文檔和想法

現在我花了一些時間來嘗試正確理解併爲他們構建101 GUIDE並從未失敗。我發現這條信息的文檔中大約一個QWidget的QSizePolicy:

這個屬性保存控件的默認佈局行爲

如果有QLayout管理此控件的孩子,大小 使用由該佈局指定的策略。如果沒有這樣的QLayout,則使用該函數的結果,即 。

例如,我認爲如果您有QLabel,並且您將策略設置爲水平擴展,垂直固定,那麼標籤本身就會改變這種方式。 但它根本沒有。

在閱讀時,我發現它在佈局中討論了ITS CHILDREN。那麼它是什麼意思呢?標籤內沒有任何東西,這是爲什麼它不起作用?

關於在QFrame中插入標籤並告訴框架展開... QFrame將展開還是拉伸(取決於同一佈局中的其他兄弟窗口小部件)還是將標籤展開或拉伸,不是QFrame?

太亂了......

拉伸?如果在添加小部件時設置拉伸10:

layout->addwidget(label, 10, Qt::AlignHCenter); 

它也不起作用。

當您添加小部件時拉伸0:採取我告訴您的策略。默認值取決於小部件的類型。類似按鈕的小部件已擴展固定。箱狀展開式展開...

展寬10意味着:最大增長。

我是對的嗎?好。當內部有一個QFrame和一個QLabel時,將展開設置爲10,並將其拖到標籤上不起作用。

+0

您是否寫過該指南? –

+0

不是。仍然沒有......但是當我與Qt密切合作時,我收到了所有這些筆記。我應該這樣做:( – darkgaze

+1

其實我只是對這個問題做了一些研究,發現QSizePolicy只與sizeHint有關,沒有其他的東西!在QT文檔中有很多誤導......這裏是我的筆記:http://www.cofoh .com/layouts-and-sizepolicy-qt –

回答

0

我不明白你所有的問題,所以我只會回答那些我認爲我所做的事。

  • 我認爲,如果你有一個QLabel,例如,你設置的策略來臥式擴大,垂直固定,標籤本身 改變這種方式。但它根本沒有。

我不知道這意味着什麼。你期望的確切行爲是什麼?實際發生了什麼?這個標籤是否在佈局中?此佈局中是否還有其他小部件?

  • 關於在QFrame中插入標籤並告訴框架展開...

如果設置了QSizePolicyQFrame對象,並設置佈局給它,這種規模的政策可能被忽略。 Docs如果存在管理此小部件子項的QLayout,則使用該佈局指定的大小策略。如果沒有這樣的QLayout,則使用該函數的結果。這意味着小部件的佈局應該管理小部件的大小。請注意,它仍將遵守最小/最大寬度/高度值。

  • 拉伸10的手段:增加最大。

是什麼讓你覺得呢?拉伸因子依賴於佈局內的其他小部件。 Docs拉伸因子用於改變多少空間小部件相互成比例。

  • 當具有QFrame和QLabel內,設置擴大,和10至STRETCH時到標籤不工作。

不工作怎麼樣?如果將彈力設置爲QFrame設置爲1,將QLabel設置爲10,則QLabel對象應始終爲您的QFrame對象的10倍寬度/高度(取決於您的佈局類型)。如果你的QFrame有一個佈局並且它包含子項,那麼這可能不起作用,因爲它取決於兒童大小策略。

+0

謝謝你的回答,我無法測試你問了什麼,並告訴我要做什麼,我會在我測試時檢查它的答案。提醒 – darkgaze

相關問題