在QHBoxLayout中通过基线垂直对齐组件

4
我正在使用Qt Designer来设计一个表单,其中包含QLabelQLineEditQComboBox控件,这些控件位于QFormLayoutQHBoxLayout容器内。为了使控件按其文本基线垂直对齐,我需要做什么?
在Max OS X上预览对话框时,不同的控件并没有按其基线对齐。以下示例是使用QHBoxLayout,但使用QFormLayout也会出现相同的问题:

Example on Max OS X

请注意下划线不在同一垂直位置上。
我正在寻找一个解决方案,适用于所有可应用基线调整的小部件组合,并且根据样式、平台、小部件组合、小部件大小和字体设置自动进行调整。类似于CSS中的vertical-align: baseline;。
更新
我在Windows XP上进行了相同的测试,并使用样式表应用了RA.s的建议。但这似乎并没有改变任何控件或其文本的放置位置。

Example on Windows XP

1个回答

1
如果我理解您的问题正确,您需要更改QLabel的垂直对齐方式。在Qt Designer中,您可以通过单击QLabel,然后调整标签的alignment属性来实现此目的。在这种情况下,我认为将垂直对齐方式更改为AlignBottom可能会解决您的问题。如果这不起作用,标签还具有可调整的margin属性。

更新

考虑为您的应用程序使用Qt样式表。以下样式表在我可以测试的平台上(不幸的是,不包括OS X)实现了所需的结果:

QLabel, QComboBox, QLineEdit
{
   background-position: bottom;
}

将垂直对齐属性设置为“AlignBottom”会使“QLabel”的文本在“QComboBox”上低一个像素,在“QLineEdit”上低两个像素。我认为调整“margin”属性或手动调整“QLineEdit”的位置不是可接受的解决方案,因为我想这些设置只适用于单个样式/平台,除了手动部分。 - Feuermurmel
我已经更新了问题,更具体地说明了我希望如何应用这些调整。 - Feuermurmel
@Feuermurmel,我更新了我的答案,提供了一个更加健壮的解决方案。 - RA.
你在哪个平台上测试过这个?设置样式表似乎并没有改变任何控件的位置。我正在Windows XP(Windows样式设置为经典)和Mac OS X 10.6上进行测试。谢谢! - Feuermurmel
@Feuermurmel 我已经在Linux上测试过(几乎每种风格)使用Qt 4.7,尽管阅读文档并不清楚此属性是否旨在与背景图像或小部件本身的内容一起使用。 在Windows 7上使用Qt 4.8进行实验,似乎唯一有影响的样式表属性是“margin”属性,但它似乎有严重的结果。 尽管如此,您可能还想尝试一下。 可能是系统级主题妨碍了其他所有事情。 - RA.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接