【问题标题】:Vertically align components by baseline in a QHBoxLayout在 QHBoxLayout 中按基线垂直对齐组件
【发布时间】:2012-08-29 19:43:30
【问题描述】:

我正在使用 Qt Designer 在 QFormLayout 中使用 QLabelQLineEditQComboBox 控件来布置表单em> 和 QHBoxLayout 容器。我需要做什么才能使控件按其文本的基线垂直对齐?

在 Max OS X 上预览对话框时,不同的控件不会按照它们的基线对齐。以下示例使用 QHBoxLayout,但 QFormLayout 也是如此:

注意下划线如何不在同一垂直位置。

我正在寻找一种适用于所有小部件组合的解决方案,其中基线调整适用,并且调整是基于样式、平台、小部件组合、小部件大小和字体设置自动完成的。与 CSSvertical-align: baseline; 相当的东西。

更新

我已经在 Windows XP 上进行了相同的测试,并且还应用了RA.s suggestion 使用样式表。但这似乎并没有改变控件或其文本的任何位置。

【问题讨论】:

    标签: macos qt qt-designer


    【解决方案1】:

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

    更新

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

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

    【讨论】:

    • 将垂直对齐属性设置为AlignBottom 会将QLabel 的文本设置为QComboBox 低一个像素,QLineEdit 低两个像素。我不认为摆弄margin 属性或手动调整QLineEdit 的位置是一个可以接受的解决方案,因为我认为这些设置仅对单一样式/平台有效,除了手册 部分。
    • 我已更新问题,更具体地说明我希望如何应用这些调整。
    • @Feuermurmel 我已经更新了我的答案,希望能提供一个更强大的解决方案。
    • 你在哪个平台上测试过这个?设置样式表似乎不会改变任何控件的位置。我正在 Windows XP(Windows 样式设置为经典)和 Mac OS X 10.6 上对此进行测试。谢谢!
    • @Feuermurmel 我已经使用 Qt 4.7 在 Linux(几乎所有风格)上对此进行了测试,尽管阅读文档并不清楚该属性是否适用于背景图像,或者小部件本身。在带有 Qt 4.8 的 Windows 7 上玩耍,似乎有任何效果的唯一样式表属性是“margin”属性,尽管它似乎有令人讨厌的结果。不过,您可能想尝试一下。系统级主题可能会妨碍其他一切。
    猜你喜欢
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 2012-05-03
    • 2017-09-20
    • 2021-05-01
    • 1970-01-01
    • 2011-10-02
    • 2014-02-19
    相关资源
    最近更新 更多