【发布时间】:2015-11-25 22:10:31
【问题描述】:
这是一个包含一系列小部件的 QFormLayout 的屏幕截图。请注意,顶部和底部输入小部件未与中间两行水平对齐。另请注意,左侧的标签未与中间两行垂直对齐。
不同之处在于顶部和底部的小部件是普通的 QLineEdit 和 QTextEdit 小部件,第二行是一个 QWidget,其 QHBoxLayout 包含一个 QSpinBox 和 QDateTimeEdit,第三行是一个 QStackedLayout,其中包含 QWidget,每个 QWidget 都有一个 QHBoxLayout 和 API 提供里面的小部件。
看起来这中间两个有额外的边距。我可以(部分)通过在普通 QWidgets 的布局上调用 QLayout::setContentsMargins 来改善这种情况。其实上图我已经有了,没有那个就更糟了。
我没有干预应用程序中的样式,它都是系统默认的。这似乎会影响 Ubuntu 15.04 上的 Qt5,我想我在它是 Qt4 应用程序时没有看到它。
我在顶级小部件中尝试了setStyleSheet ("QWidget {margin:0;}"),它引入了各种问题。我也尝试了setStyleSheet (".QWidget {margin:0;}") 的变体,但没有效果。 QLayout::setSpacing 也没有效果,在样式表中设置padding:0 也不能解决问题。
我没有尝试过似乎使这些自定义布局 QWidget 周围的间距与 API 提供的小部件保持一致。
我错过了什么?谢谢。
【问题讨论】:
-
你试过
setContentsMargins()吗? doc.qt.io/qt-5/qlayout.html#setContentsMargins -
正如我上面所说,是的。它部分工作。我也想知道为什么需要它。