这是包含一系列小部件的QFormLayout的屏幕截图。请注意,顶部和底部输入窗口小部件未与中间两行水平对齐。另请注意,左侧的标签未与中间的两行垂直对齐。
不同之处在于顶部和底部小部件是普通的QLineEdit和QTextEdit小部件,第二行是QWidget,QHBoxLayout包含QSpinBox和QDateTimeEdit,第三行是包含QWidget的QStackLayout,每个QWidget都有QHBoxLayout和API提供那些小部件。
看起来这些中间两个有额外的边距。我可以(部分)通过在简单的QWidgets布局上调用QLayout :: setContentsMargins来改善这种情况。事实上,在上面我已经拥有的图像中,没有它更糟糕。
我没有干扰应用程序中的样式,它是所有系统默认的。这似乎影响了Ubuntu 15.04上的Qt5,我认为当它是Qt4应用程序时我没有看到它。
我在顶级窗口小部件中尝试了setStyleSheet ("QWidget {margin:0;}")
,它引入了各种各样的问题。我也尝试了变体setStyleSheet (".QWidget {margin:0;}")
,但这没有效果。 QLayout :: setSpacing也没有效果,在样式表中设置padding:0
也没有解决它。
我尝试过的任何内容似乎都不会使这些自定义布局QWidgets的间距与API提供的小部件保持一致。
我错过了什么?感谢。
答案 0 :(得分:0)
你观察到的是多平台ui的斗争以及一些小部件非常糟糕的简单事实。鉴于时间有限且任务繁重,开发团队不会公平对待这些功能。强大的小部件和布局(如标准小部件QGridLayout
)将在日夜保持无缺陷,而QStackedWidget
等遗留小部件将被推送到维护队列的底部。
我尝试使用设计师单独重现您的问题,这是我得到的( Qt 4.8 ):
你能看到什么:
我的两分钱:
Qt4
和你Qt5
,我们都将QHBoxLayout
边距设置为零,这意味着在Qt5或Linux实现中存在潜在的回归。 因此,这确认了您的疑虑 。QStackedWidget
可怕。它是通常的小部件,提供快速和基本的功能,而不是实现真正的交易。这里是一个QStackedLayout
的小部件。就像我说的那样,我怀疑那些小工具在需要大量开发工作时会得到更少的爱。QGridLayout
而不是QStackedLayout
小部件布局的小部件。它将解决标签未对齐的问题。一开始很难设置,但结果通常很整洁。