Qt 在 Mac 上:表单布局无法水平拉伸

3

我仍在尝试使用Qt做一些非常基础的事情,但进展缓慢。我的目标是为Mac平台开发。目前遇到的问题是让表单不会混乱。

简单的问题:创建一个新的MainWindow应用程序。进入Qt Creator(打开Forms->mainwindow.ui)。

将3个标签拖到相应位置。然后我拖了2个Line Edits和一个Dial,只是为了好玩,这部分可能并不重要。

点击主窗口,然后告诉它使用Form Layout。在Qt Creator中,如果我调整窗口大小,我的各个line edit会扩展以填充可用空间,这正是我想要的。

运行应用程序。所有的line edit字段都有一个固定的长度,非常短(如果我不覆盖它们的最小宽度),并且随着我调整窗口大小,它们不会自动调整大小。

使用Form Layout的三分之二原因是为了具备调整大小的功能。

我尝试在设置为Form Layout之前单击中央小部件:行为没有改变。

如果我使用网格布局,则可以获得合理的行为,虽然我必须在底部添加一个垂直间距,否则当我调整窗口大小时,我的Dial会疯狂地调整大小。

那么...我是不是在使用Form Layout时做错了什么?还是说它在Mac上运行效果不好,我应该改用Grid Layout呢?

我真的很想念Motif的XmFormLayout。设置所有约束需要时间,但我可以让我的表单完全按照我的意愿执行。啊,但那是20世纪90年代的事情了。


如果我能找出如何不必将所有内容都展开到全宽,那就太好了。我有几个 Line Edit 小部件,我想让它们保持短小。它们将保存 TCP 端口号。 - Joseph Larson
1个回答

4

在右侧的面板中,您可以看到对象,单击centralWidget。在属性面板中向下滚动,直到到达表单布局的布局属性。将layoutFieldGrowthPolicy设置为ExpandingFieldsGrow

默认情况下,行编辑在macOS上不会自动填充可用空间,因为它们不应该这样做。这是某种macOS UI指南。QFormLayout默认遵循平台惯例。

如果我能找出如何不必一定将所有内容扩展到全宽也会很好。我有一些要保持简短的Line Edit小部件。它们将保存TCP端口号。

对于那些部件,将受影响的行编辑的水平策略属性(在属性面板中,它分组在sizePolicy属性组内)设置为适当的值。在这种情况下,可能是Fixed,但是首先查阅文档了解每个设置的作用。


搞定了!谢谢。 - Joseph Larson
@JosephLarson 没问题。有一件事:我注意到你从来没有在你的问题中标记答案为“已接受”。如果一个答案解决了你的问题,请将其标记为已接受(包括你自己回答问题的情况)。 - Nikos C.
啊,如何做到这一点并不明显,而且我不知道我可以这样做。谢谢,Nikos。 - Joseph Larson

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