2017-01-03 21 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

回答