【问题标题】:How can I get rid of vertical spacing of empty rows in a QGridLayout in Qt?如何摆脱 Qt 中 QGridLayout 中空行的垂直间距?
【发布时间】:2012-11-04 20:38:43
【问题描述】:

所以我有一个对话框,其中包含一个QGridLayout,它有两列小部件(标签和组合框)。根据组合框的选择,某些行可能会被隐藏。

我发现让对话框调用 self.layout().setSizeConstraint(QLayout.SetFixedSize) 因为它显示/隐藏组合框会使对话框相应地改变大小。

但后来我意识到布局仍然显示空行的垂直间距,从而使对话框在这里和那里显示太多空间。

我怎样才能摆脱这个?有没有办法让布局调整大小以仅显示具有可见小部件的行的垂直间距?

【问题讨论】:

    标签: qt layout dynamic dialog resize


    【解决方案1】:

    我想我找到了解决方案。使用QVBoxLayout 而不是QGridLayout 会以某种方式使小部件在小部件隐藏时它们的垂直间距消失。

    【讨论】:

      【解决方案2】:

      您可能需要使用QLayout::takeAt ( int index ) 来取出该项目,一旦可见性设置为false 并在您需要它回到您的布局时使用QLayout::addItem ( QLayoutItem * item )

      请记住,如果一个项目被删除,其他项目将被重新编号。因此,您必须相应地计划您要做什么。请参阅documentation

      【讨论】:

        猜你喜欢
        • 2021-10-25
        • 2015-02-05
        • 2018-04-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-27
        • 1970-01-01
        • 2011-04-21
        • 2011-10-31
        相关资源
        最近更新 更多