是否可以在QGridLayout中动态跨列?

Is it possible to dynamically span columns in a QGridLayout?

提问人:lanewsa 提问时间:11/16/2023 更新时间:11/16/2023 访问量:17

问:

我正在使用 PyQt5,并且需要创建一个网格布局,最初具有固定大小的行和列。 在某个时候,我将拥有大于默认单元格宽度的 QLabel(或 QButton)文本。 是否可以动态调整网格单元的大小? 在这一点上,我没有任何测试代码,因为我仍在尝试可视化如何实现这一点 - 我只是不确定这是否可行。

pyqt5 qgridlayout

评论

0赞 musicamante 11/17/2023
你的问题不清楚。您谈论“行和列的固定大小”,但这是模棱两可的:您是在谈论行/列还是每个单元格的几何形状?QGridLayout不允许设置固定大小,只能设置最小宽度(用于列)或高度(用于行)。我建议您尝试将您的问题说得更清楚,但也要花点时间使用 Designer,以便更好地了解布局管理器的基本方面。
0赞 lanewsa 11/17/2023
@musicamante:我很抱歉没有清楚地表达自己。
0赞 lanewsa 11/17/2023
@musicamante:我很抱歉没有清楚地表达自己。我的意思是,当我最初使用QGridLayout创建布局时,我会得到我所期望的单元格,并且每个单元格具有相同的几何形状,即一定数量的x / y像素。这是我所期望的。在逻辑的某个地方(由我计划使用的属性文件驱动),我分配给单元格的小部件占用的空间可能比最初分配给该单元格的空间多。顺便说一句,这只会发生在第 0 列上,所以我想到只有在最初配置网格时才对第 0 列使用 minimumWidth。有更好的方法吗?谢谢。
0赞 musicamante 11/17/2023
布局根据小部件的 sizeHint() 为小部件提供空间量,考虑其 minimumSizeHint() 并根据其 sizePolicy() 确定正确的比例。如果您看到相同的大小,那只是因为您可能使用了相似(或相同)的小部件。如果这些小部件中的任何一个发生影响上述任何属性的更改,则布局管理器将相应地自动计算几何图形。
0赞 musicamante 11/17/2023
布局不是一成不变的:内部小部件(或它们设置的小部件的几何形状)的每一次更改都会适应并尽可能地适应所有内容。对不起,如果您还不知道布局管理的工作原理,则无法尝试“可视化如何实现此操作”。除了上面所说的(使用 Designer 进行实验)之外,我还建议您使用不同的小部件(或具有不同属性的相同小部件,例如使用一些具有不同文本长度的 QLabel)从代码中进行一些简单的测试,以便您可以开始了解小部件的布局是如何工作的。

答: 暂无答案