【问题标题】:Qt How to add custom widgets to a vertical layout to occupy the least amount of vertical space (no space between custom widgets)Qt如何将自定义小部件添加到垂直布局以占用最少的垂直空间(自定义小部件之间没有空间)
【发布时间】:2017-12-15 16:04:55
【问题描述】:

我创建了一个自定义小部件,其中包含一些水平布局的小部件:

目标是在列表中显示其中的几个,因此我将它们动态添加到父垂直布局中。我遇到的问题是,当我的自定义小部件添加到垂直布局时,它们之间的空间太大:

我希望它们紧密包装,以便它们之间只有很小的空间。我在底部添加了一个垫片,并玩弄了尺寸政策等,但无济于事。下面是添加小部件的代码。任何和所有帮助表示赞赏。

    // Draw the nodes area
QVBoxLayout* nodeVLayout = new QVBoxLayout;
NodeWidget* node1 = new NodeWidget;
NodeWidget* node2 = new NodeWidget;
QSpacerItem* spacer = new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Expanding);

nodeVLayout->setSpacing(1);
nodeVLayout->addWidget(node1);
nodeVLayout->addWidget(node2);
nodeVLayout->addSpacerItem(spacer);

ui->scrNodes->setLayout(nodeVLayout);

【问题讨论】:

  • 在它们下方添加一个增长/扩展的垫片,将它们向上推。并将它们的大小策略设置为 QSizePolicy::Minimum。应该做我期望的伎俩。
  • 嗨。底部已经有一个垫片,但我确实按照你所说的将尺寸政策设置为最小,但它没有改变任何东西。

标签: c++ qt user-interface qtwidgets


【解决方案1】:

在布局选项中检查边距和间距是否设置正确。

默认情况下,顶部和底部的边距设置为 9 像素,这会导致问题。

【讨论】:

    猜你喜欢
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2010-09-07
    相关资源
    最近更新 更多