首页 > 解决方案 > 如何将 QPushButton 设置为垂直增长?

问题描述

背景:我需要类似Command Link的控件。通常,我会使用 Qt 的builtinQCommandLinkButton,但在这种情况下,我还需要支持 Right-to-Left 布局。遗憾的是QCommandLinkButtonQt::RightToLeft通过setLayoutDirection. 似乎也没有办法通过样式表覆盖布局方向。

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

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

如果我更改QPushButtonQWidget,新的小部件会正常增长。

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

标签: qtuser-interface

解决方案


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

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


推荐阅读