网格布局小部件大小调整问题

时间:2019-08-19 14:37:36

标签: qt

我在我的应用程序内使用网格布局。我将网格布局设置为一些固定大小。

     myBootGridLayout->setContentsMargins(3,0,0,0);
     myBootGridLayout->setRowMinimumHeight(0,25);
     myBootGridLayout->setRowMinimumHeight(1,25);
     myBootGridLayout->setRowMinimumHeight(2,25);
     wdgBootFeatues->setFixedHeight(80);

对于QPushButton,我使用大小规则:

btnSelBootImagePath->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);

My grid layout

但是,正如您在图像上看到的那样,ComboBox和Button的大小相同,但LineEdit字段较小。我做错了什么?是否可以像QT文档中一样将它们设置为相同的大小(高度)?

Documentation

1 个答案:

答案 0 :(得分:0)

如果您的问题是要了解如何确保元素具有相同的高度,则应考虑以下几点:

  1. 布局可能并不一定要确保某些元素具有所需的高度,因为它还依赖于布局本身中元素的尺寸(水平和垂直)策略。如果要使QLineEdit和QPushButton实例具有相同的高度,则应为它们各自设置最小高度。也许,将这些元素的高度固定为固定(即将最小和最大高度设置为相同的值)以适合您的需求甚至是有意义的,因为默认情况下,这两个元素都具有固定的垂直尺寸政策。这是有原因的,因为大多数应用程序都以相同的方式处理按钮和一行文本字段。
  2. 在大多数情况下,根本不需要将QVBoxLayout,QHBoxLayout和QGridLayout结合起来,因为QGridLayout更加灵活,并且首先将QVBoxLayout和QHBoxLayout功能组合在一个单独的布局下,这可能会满足您的所有需求(即以网格方式表示您的元素)。此外,如果使用较少的元素,则UI元素的构建会稍微快一些。
  3. Qt文档之所以会产生这种效果,是因为以下原因-元素在其他设备上进行了测试。 Qt不会尝试在所有平台上为小部件的元素制作相同的样式表,因此视觉差异将无处不在。在某些操作系统上,默认情况下,按钮高度小于文本字段高度,这是完全正常的。
  4. 一种确保大小大于默认值的方法是更改​​大小策略(在您的情况下为垂直)。代码段更改大小策略基本上是正确的。但是,大小策略与跨元素的固定高度不同。但是,如果您的按钮和行编辑将在同一行中,并且两者都具有最小扩展垂直策略,则这些元素在该行中的高度可能相同。

因此,可能要确保元素的高度保持不变,是通过代码或Qt Creator设置一些最小(在固定垂直大小策略的情况下也要设置最大)高度。从思考的角度来看,这将是最简单,最痛苦的事情。我不确定我是否已经回答了这个问题(看起来您是用自己的方式回答自己的),但是我确定我已经介绍了一些理解Qt布局时可能会派上用场的想法。