如何设置QPushButton垂直增长?

时间:2019-10-24 08:59:27

标签: qt user-interface

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

我尝试使用QPushButton来解决此问题:我实例化了QPushButton并将其内容替换为包含两个垂直堆叠标签的自定义布局。这没有用,因为QPushButton拒绝水平扩展。

由于无法使QPushButton实例正常工作,我决定尝试对其进行子分类。无论我尝试了什么(覆盖sizeHint,将垂直sizePolicy设置为展开,resize显式等等),按钮都拒绝将高度增加30像素以上。

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

问题:如何强制QPushButton垂直生长并适合其内部小部件?如果无法做到这一点,那么对于与QPushButton和其他“本地”控件在视觉和行为上都一致的按钮式小部件,我有什么选择?

2 个答案:

答案 0 :(得分:0)

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

enter image description here

答案 1 :(得分:0)

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

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