2009-11-06 13 views
2

對於那些沒有閱讀過我的Qt questoins的人,我正在學習一個項目的Qt。我只有有限的GUI設計經驗,而不是Qt。Qt QHboxLayout cell size ssues

我有一個水平佈局,我想用一些按鈕填充。我可以很好地喂這些按鈕,但我以前的方形按鈕被水平拉伸以佔用更多的空間。

我想讓佈局管理器確定調整這些按鈕的最佳方式,但我也希望它們的原始比例保持不變。例如,如果我開始使用需要縮小的32X32按鈕以適應佈局中的所有按鈕,我希望它們按比例縮小,以便保持寬度與高度的比例。 20X20,16X16,12X12都可以,但24X16將是一個不可接受的尺寸範例。

我已經修改了按鈕和彈力選項上的尺寸策略。即使在閱讀QPushButton和QHboxLayout類後,我也沒有看到如何做到這一點。它是如何完成的?

謝謝。

回答

2

只要我理解正確的問題,我想你想要的是QBoxLayout::addStretch()。這將添加填充未使用空間的間隔物對象。所以按鈕將有他們的理想大小和間隔將填補其餘。您可以嘗試在Designer中對此進行試驗,這比寫/編譯/運行循環更容易。

+0

這解決了這個問題對我「再次顯示」複選框來確定的左/取消按鈕等: self.horizo​​ntalLayout.addWidget(self.checkBox) self.horizo​​ntalLayout.addStretch() self.horizo​​ntalLayout.addWidget (self.buttonBox) – gseattle 2012-05-12 21:32:16

+0

經過相當長的時間,我已經用Qt做了更多,這絕對是一個更好的解決方案。今天這個問題引起了我的注意,因爲它現在是一個「受歡迎的問題」,所以我有機會審查它,並將我的接受程度改爲你的答案。 – 2012-06-07 11:03:41

2

你應該看看this question的答案。這是我在那裏回答的一個回顧。

您需要創建QLayoutItem的自定義派生項,該派生項覆蓋了bool hasHeightForWidth()int heightForWidth(int width)以保留寬高比。你可以通過按鈕來查詢它,或者你可以直接設置比例。你還需要確保widget()函數返回一個指向適當按鈕的指針。

一旦完成,您可以使用與小部件相同的方式將佈局項目添加到佈局。所以當您的按鈕被添加時,將其更改爲使用您的自定義佈局項目類。

我還沒有真正測試過這個,所以這是一個理論上的解決方案。如果需要的話,我不知道有什麼方法可以通過設計師來實現這個解決方案。

+0

我實際上通過使用QToolButton獲得了期望的行爲,這本質上是我想要的,但是這個答案看起來是未來的方向。謝謝。 – 2009-11-07 03:39:20

相關問題