【发布时间】:2017-01-03 21:17:35
【问题描述】:
让我解释一个简化的情况。在 Qt Creator 中,创建一个包含 QPushButton 的 QHBoxLayout 和另一个包含第二个 QPushButton 的 QHBoxLayout(即嵌套布局)。如下所示:
QHBoxLayouts 的四个边距(左、上、右、下)的值为 0。我希望布局的边界(附加图像中的红色矩形)完美地位于两个按钮的边界上,并且两个按钮垂直对齐。然而,从图片中可以看出,情况显然并非如此。第二个按钮比第一个按钮高一点。事实上,将下边距设置在 0 和 8 之间并没有视觉上的差异,下边距仅从 9 个像素开始增长,至少在 Mac OS 上是这样。
对这种行为有什么解释吗?以及如何完全删除边距而不是调用layout->setContentsMargins(0,0,0,0)?
我知道QStyle::PixelMetric 中的QStyle::PM_LayoutBottomMargin 等,这应该是特定平台上的默认底部边距。但是为什么layout->setContentsMargins(0,0,0,0) 不会覆盖这些值呢?
编辑:我只是在 Windows 上尝试了同样的方法,确实一切都如预期的那样(没有边距)。所以这个问题只能在 Mac OS 上重现。
【问题讨论】:
-
您指的是 Qt Designer 中的正确方法,还是代码中的正确方法?
setContentsMargins(0,0,0,0)适合代码,否则,使用 Qt Creator 中的属性窗口进行适当的布局,将边距设置为 0。 -
当我构造同样的东西时,我没有看到这个问题。事实上,我的默认内容边距已经为零。你能发布 .ui 文件吗?
-
@owacoder,实际上我指的是两者。我通过设置
setContentsMargins(0,0,0,0)在我的代码中发现了这个问题,后来在Qt Designer中尝试了将边距属性设置为0后给出了相同的结果。 -
@goug 你也在 Mac OS 上工作吗?这种特殊情况可能存在平台差异。根据我在 Mac 上的尝试,即使通过代码或在 Qt Designer 中将其设置为零,下边距也始终至少为 8 像素。我不允许上传文件,但 .ui 就像问题中描述的一样简单。顺便说一句,0 值的边距确实是默认值,但显然 0 值没有效果,如屏幕截图所示。
-
我在 Windows 上。我没有在家里的 Mac 上设置开发环境。我看到有人发布了错误报告和解决方法,希望对您有所帮助。