【问题标题】:How can I set a QPushButton to grow vertically?如何将 QPushButton 设置为垂直增长?
【发布时间】:2019-10-24 08:59:27
【问题描述】:

背景:我需要类似Command Link 的控件。通常,我会使用 Qt 的builtin QCommandLinkButton,但在这种情况下,我还需要支持从右到左的布局。遗憾的是,QCommandLinkButton 在通过setLayoutDirection 明确设置时似乎不尊重Qt::RightToLeft。似乎也没有办法通过样式表覆盖布局方向。

我试图通过使用QPushButton 来解决这个问题:我实例化了QPushButton,并用包含两个垂直堆叠的标签的自定义布局替换了它的内容。这不起作用,因为QPushButton 拒绝水平扩展。

未能使QPushButton 实例工作,我决定尝试对它进行子类化。无论我尝试什么(覆盖sizeHint,将垂直sizePolicy 设置为展开,resizeing 明确等),按钮都拒绝增长超过 30 像素高。

如果我将QPushButton 更改为QWidget,新的小部件会正常增长。

问题:如何强制QPushButton 垂直增长并适合其内部小部件?如果这是不可能的,我有什么选项可以选择在视觉和行为上都与QPushButton 和其他“本机”控件一致的按钮式小部件?

【问题讨论】:

标签: qt user-interface


【解决方案1】:

通过将最大高度设置为 16777214(而不是默认的 16777215),然后将按钮的内容边距设置为 10,我设法使按钮正常增长。

令人困惑的是,QPushButton 的默认最大高度应该足够了,但由于某种原因,它拒绝增长超过 30 像素,除非最大高度明确设置为其他值。

【讨论】:

    【解决方案2】:

    将按钮放在布局中并将其vertical size policy 设置为Maximum

    【讨论】:

    • 我正在使用 Qt Widgets 在运行时动态生成我的用户界面。我找到的最接近的设置是QLayout::setSizeConstraint,我怀疑这不相关。我确实尝试将约束设置为最大值,将无约束设置为不成功。
    猜你喜欢
    • 2019-12-10
    • 2012-12-20
    • 2020-08-08
    • 2011-08-09
    • 2016-05-19
    • 2014-12-26
    • 2017-07-28
    • 2021-07-25
    • 1970-01-01
    相关资源
    最近更新 更多