【问题标题】:Qt: "Expanding" doesn't work inside a layoutQt:“扩展”在布局中不起作用
【发布时间】:2012-06-09 22:24:38
【问题描述】:

我的目的是创建一个内部带有 QVBoxLayout 的可滚动控件,上面有各种控件(比如按钮)。该控件放在 *.ui 表单上。在该控件的构造函数中,我编写了以下代码:

    MyScrollArea::MyScrollArea(QWidget *parent) :
        QScrollArea(parent)
    {
        // create the scrollable container

        this->container = new QWidget();  // container widget member
        this->container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
        this->container->setContentsMargins(QMargins(0,0,0,0));

        this->content = new QVBoxLayout(); // layout member
        this->content->setMargin(0);
        this->content->setSpacing(0);

        for (int i=0; i<100; i++)
        {
            QPushButton * widget = new QPushButton();
            widget->setText("button");
            widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
            this->content->addWidget(widget);
        }

        this->container->setLayout(this->content);
        this->content->layout();

        this->setWidget(this->container);
   }

我的问题:按钮大小固定,不能水平展开。他们有一个固定的大小。我希望它们水平扩展以填充它们所在的行。如何让它们在其父容器中水平扩展?

【问题讨论】:

    标签: qt


    【解决方案1】:

    尝试拨打this-&gt;setWidgetResizable(true);

    【讨论】:

    • 为布局中的每个小部件使用“setMinimumHeight”就可以了。谢谢。
    • @JasonGenX 不,setMinimumHeight 确实 做到了,它还做了另一个把戏——写在锡上的那个 :-)。纯属巧合,它适用于您的情况。
    • setWidgetResizable(True) 就像一个魅力,它必须在QScrollArea 上调用。
    猜你喜欢
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 2011-05-23
    • 2012-01-05
    • 2011-03-30
    • 2023-01-13
    • 2014-12-07
    • 2018-06-01
    相关资源
    最近更新 更多