首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QGroupBox中的QScrollArea,滚动条,而不是调整QGroupBox大小

QGroupBox中的QScrollArea,滚动条,而不是调整QGroupBox大小
EN

Stack Overflow用户
提问于 2015-11-15 19:18:39
回答 1查看 1.1K关注 0票数 2

我希望在QGroupBox中有一个QScrollArea,这样当我在分组框中添加新的小部件时,它的大小保持不变,但我有滚动条而不是调整分组框本身的大小。

下面是我的代码:

代码语言:javascript
复制
#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QtCore>
#include <QtGui>
#include <QLayout>
#include <QScrollArea>
#include <QGroupBox>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QGroupBox *box = new QGroupBox(QObject::tr("Example"));
    QScrollArea *sa = new QScrollArea;

    QGridLayout *gridLayout = new QGridLayout;
    QPushButton *b1 = new QPushButton("A");
    QPushButton *b2 = new QPushButton("B");
    QPushButton *b3 = new QPushButton("C");
    QPushButton *b4 = new QPushButton("D");
    QPushButton *b5 = new QPushButton("E");
    QPushButton *b6 = new QPushButton("F");
    QPushButton *b7 = new QPushButton("F");
    QPushButton *b8 = new QPushButton("F");
    QPushButton *b9 = new QPushButton("F");

    // addWidget(*Widget, row, column, rowspan, colspan)
    // 0th row
    gridLayout->addWidget(b1,0,0,1,1);
    gridLayout->addWidget(b2,0,1,1,1);
    gridLayout->addWidget(b3,0,2,1,1);

    // 1st row
    gridLayout->addWidget(b4,1,0,1,1);

    // 2nd row with 2-column span
    gridLayout->addWidget(b5,2,0,1,2);

    // 3rd row with 3-column span
    gridLayout->addWidget(b6,3,0,1,3);

    gridLayout->addWidget(b7,4,0,1,3);

    gridLayout->addWidget(b8,5,0,1,3);

    gridLayout->addWidget(b9,6,0,1,3);

    box->setLayout(gridLayout);
    sa->setWidget(box);

    setCentralWidget(sa);
}

MainWindow::~MainWindow()
{
    delete ui;
}

我现在所拥有的是,每次我添加一个新的QPushButton,QGroupBox都会调整大小,不管有没有QScrollArea。我应该改变什么才能拥有我想要的行为?有可能吗?

EN

回答 1

Stack Overflow用户

发布于 2015-11-15 21:25:16

这是因为您将分组框放在滚动区域内。滚动区域不会限制其子项的大小。

你应该反其道而行之,将scrollarea放入组框中。下面是如何实现的;

代码语言:javascript
复制
QWidget* sw = new QWidget();
sw->setLayout(gridLayout);
sa->setWidget(cont);
QVBoxLayout* bl = new QVBoxLayout(box);
bl->addWidget(sa);

setCentralWidget(box);

请注意,如果您使用的是切换按钮(例如单选按钮),它们将不会作为一个组。因为从技术上讲,它们不再位于相同的QGroupBox中-它们位于滚动区域内。您可以使用QButtonGroup实例提供组行为。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33719075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档