2017-01-03 23 views
0

讓我來解釋一個簡化的情況。在Qt Creator中,創建一個QHBoxLayout,其中包含QPushButton,另一個QHBoxLayout包含第二個QPushButton(即嵌套佈局)。如下所示: Nested layout如何完全刪除QLayout的邊距(Mac OS特定)

兩個QHBoxLayout s都有四個邊界值(左,上,右,下)。我期望佈局的邊界(附加圖像中的紅色矩形)完全位於兩個按鈕的邊界上,並且兩個按鈕垂直對齊。然而,很明顯,在圖像中看不到這種情況。第二個按鈕比第一個按鈕高一點。事實上,將底部邊距設置爲0到8之間沒有視覺差異,底部邊距僅從9像素增加,至少在Mac OS上。

此行爲的任何解釋?以及如何完全刪除邊距而不是調用layout->setContentsMargins(0,0,0,0)

我知道QStyle::PM_LayoutBottomMarginQStyle::PixelMetric,這應該是特定平臺上的默認底部邊距。但爲什麼這些值不會被layout->setContentsMargins(0,0,0,0)覆蓋?

編輯:我只是在Windows上嘗試過,確實一切都如預期(無邊距)。所以這個問題只能在Mac OS上重現。

+0

你指的是正確的方法在Qt設計器,或在代碼? 'setContentsMargins(0,0,0,0)'適用於代碼,否則,使用Qt Creator中的屬性窗口進行適當的佈局,將邊距設置爲0. – owacoder

+0

當我構建相同的東西時,我沒有看到這個問題。實際上,我的默認內容利潤率已經爲零。你能發佈.ui文件嗎? – goug

+0

@owacoder,其實我是指兩者。我通過設置'setContentsMargins(0,0,0,0)'在我的代碼中發現了這個問題,後來在Qt Designer中嘗試過,它將margin屬性設置爲0後給出了相同的結果。 – Wayee

回答