Qt 为什么定制的QWidget,而不是内置的QWidget,具有非零的边距?
这是一个包含一系列小部件的QFormLayout的屏幕截图。请注意,顶部和底部输入小部件没有水平对齐到中间两行。还请注意,左侧的标签未垂直对齐中间两行 区别在于,顶部和底部的小部件是普通的QLineEdit和QTextEdit小部件,第二行是QWidget,其中QHBoxLayout包含QSpinBox和QDateTimeEdit,第三行是QStackedLayout,其中包含QWidget,每个QWidget内都有QHBoxLayout和API提供的小部件 看起来中间这两个有额外的利润。我可以(部分)通过在普通QWidgets的布局上调用QLayout::setContentsMargins来改善这种情况。事实上,在上面的图片中,我已经看到了,没有这些,情况会更糟 我没有干预应用程序中的样式,这都是系统默认设置。这似乎影响了Ubuntu15.04上的Qt5,我不认为我在它是Qt4应用程序时看到过这一点 我在顶级小部件中尝试了Qt 为什么定制的QWidget,而不是内置的QWidget,具有非零的边距?,qt,qt5,Qt,Qt5,这是一个包含一系列小部件的QFormLayout的屏幕截图。请注意,顶部和底部输入小部件没有水平对齐到中间两行。还请注意,左侧的标签未垂直对齐中间两行 区别在于,顶部和底部的小部件是普通的QLineEdit和QTextEdit小部件,第二行是QWidget,其中QHBoxLayout包含QSpinBox和QDateTimeEdit,第三行是QStackedLayout,其中包含QWidget,每个QWidget内都有QHBoxLayout和API提供的小部件 看起来中间这两个有额外的利润。我可
setStyleSheet(“QWidget{margin:0;}”)
,这带来了各种各样的问题。我还尝试了变体setStyleSheet(“.QWidget{margin:0;}”)
,但没有效果。setspace也没有效果,在样式表中设置padding:0
也不能解决这个问题
我尝试过的任何东西似乎都无法使这些定制布局QWidget的间距与API提供的Widget保持一致
我错过了什么?谢谢。您观察到的是多平台用户界面的挣扎,以及一些小部件非常糟糕的简单事实。由于时间有限,任务繁重,开发团队不会公平地对待这组特性。强大的小部件和布局,如标准小部件,
QGridLayout
,将日夜维护,以确保无缺陷,而传统的小部件,如QStackedWidget
,将被推到维护队列的底部
我试图单独使用designer复制您的问题,下面是我得到的(Qt 4.8):
您可以看到:
- 带有小部件容器的第二行有很大的边距
- 第三行甚至没有显示组合框(我发誓它在那里!!)
Qt4
而您使用了Qt5
,并且我们都将QHBoxLayout
边距设置为零,这意味着在Qt5或linux实现中存在潜在的回归这证实了您的怀疑QStackedWidget
非常可怕。它是一个提供快速基本功能的常用小部件,而不是实现真正的交易。这里它将是一个带有QStackedLayout
的小部件。就像我说的,我怀疑当需要大的开发努力时,这些小部件会受到较少的喜爱QGridLayout
而不是具有widget布局的widget的QStackedLayout
。它将解决标签不对齐的问题。一开始很难设置,但结果通常很好您是否尝试过
setContentsMargins()
?正如我上面所说,是的。它部分起作用。我也想知道为什么需要它。对不起,打字错误,这一直是一个QSTACKED布局。在任何情况下,我都会在不使用堆叠布局的地方遇到类似的问题,只不过是盒子里的盒子。