【问题标题】:Expanding a Qt Layout : how to put a widget on the right side and the let the other widget to fully fill the left?扩展 Qt 布局:如何将一个小部件放在右侧并让另一个小部件完全填充左侧?
【发布时间】:2011-09-21 00:23:25
【问题描述】:

我想在 QHBoxLayout 的右侧放置一个小部件,其他空间应该扩展左侧。我已将小部件的 SizePolicy 设置为 Expanding,但它无效。任何人都可以提供一些帮助吗?谢谢。

代码在这里:

QHBoxLayout* tmplayout = new QHBoxLayout(this);
tmplayout->setContentsMargins(0, 0, 0, 0);
lineEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Ignored);
tmplayout->addWidget(lineEdit, 0, Qt::AlignRight);
tmplayout->addWidget(pushButton, 0, Qt::AlignRight);

lineEdit 应该展开。

【问题讨论】:

  • 请发布您遇到问题的代码。

标签: qt layout qt4


【解决方案1】:

尝试fixedminimum 大小政策。甚至您可能想要修复最大宽度。

【讨论】:

    【解决方案2】:

    尝试改变:

    tmplayout->addWidget(lineEdit, 0, Qt::AlignRight);
    tmplayout->addWidget(pushButton, 0, Qt::AlignRight);
    

    收件人:

    tmplayout->addWidget(lineEdit);
    tmplayout->addWidget(pushButton);
    

    在处理像这样的简单布局时,无需明确指定对齐或拉伸因子。

    如果你想强制 pushButton 到特定的大小,你可以使用setMinimumSizesetMaximumSizesetFixedSize

    最好的问候

    【讨论】:

      【解决方案3】:

      我不确定我是否正确理解了您的问题,但也许您需要查看QSpacerItem。如果这没有帮助,也许您可​​以在 Qt-Creator 中制作一个粗略的模型并发布屏幕截图(一个示例显示您拥有的大致内容,一个示例显示您想要的内容)

      【讨论】:

      • 我的意思是,我怎么能让 lineEdit 填满布局的左侧。你现在明白了吗?
      • 我认为 ExplodingRat 可以为您提供答案,要么留下拉伸和对齐的值,要么设置它们有用的值。 doc.qt.nokia.com/4.7/qboxlayout.html#addWidget
      【解决方案4】:

      对于您希望位于左侧并展开的小部件,请尝试将它们简单地添加到右侧的小部件之前,并为它们的拉伸因子添加1。例如,

      tmplayout->addWidget(exampleWidget, 1);
      

      然后,您可以简单地将您想要在右侧的小部件添加到左侧的小部件之后,只需使用:

      tmplayout->addWidget(lineEdit);
      tmplayout->addWidget(pushbutton);
      

      这将自动为它们提供 0 的拉伸系数。

      由于本例中exampleWidget的拉伸系数为1,高于默认0exampleWidget将展开;而且,由于您在其他人之前添加它,它将在左侧。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-18
        • 1970-01-01
        • 2021-05-16
        • 1970-01-01
        • 1970-01-01
        • 2011-05-09
        相关资源
        最近更新 更多