【问题标题】:Remove Qt widget layout's margins删除 Qt 小部件布局的边距
【发布时间】:2016-02-11 00:14:33
【问题描述】:

我想删除屏幕截图中标记为红线的间距。 我将布局的内容边距设置为 (0,0,0,0),将父小部件的大小调整为最小,但仍然无法摆脱这些空间。 这只发生在 Mac 上。 寻求帮助。 提前致谢!

【问题讨论】:

  • M... ui->layout->setSpacing(0); ?
  • 已设置 setSpacing(0)。没用。
  • 尝试组合 setMargin / setSpacing / setContentMargings。奇怪的是 Mac OS 端口有这个问题,而其他平台没有。我也想知道 QPushButton 对象的大小策略是什么?
  • 我明白了。我意识到 QFrame、QWidget(当添加到布局时)不会有这个问题。另外,不知道为什么它只发生在 QPushbutton 上,如果我切换到 QToolButton 空间就消失了。
  • 欢迎使用 Mac 上奇怪的尺寸政策。我的申请也有类似的问题。它在 Windows 和 Ubuntu 上按预期呈现。我最终为 Mac 编写了一个单独的样式表来克服这些问题。

标签: c++ macos qt layout


【解决方案1】:

正如 nnb 所说,欢迎使用 mac 上奇怪的尺寸政策。 但是您可以将布局包装到小部件并裁剪边距。

【讨论】:

  • 空格还在。我猜这个问题是 QPushButton 特有的。感谢您的建议。
  • 是的,ofc。这是 qpushbutton 的 mac 特定实现。您也可以尝试使用继承创建自己的 qpushbutton 实现