小编mic*_*szm的帖子

QScrollArea带有动态添加的小部件

我在QScrollArea中放置自定义小部件时遇到一些问题.我的自定义小部件在QGridLayout中包含4个标签填充它.现在我想将这个小部件保存在QScrollArea中,并且能够为它添加更多标签,但我想只在视口中显示其中的4个.

这就是QScrollArea中带有4个标签的widget的样子: 在此输入图像描述

在添加两个标签之后,这里是QScrollArea中的小部件,其中红色矩形是视口. 在此输入图像描述

我怎样才能达到这样的效果?

===================================

UPDATE

我最终使用以下代码解决了我的问题.它可能需要一些小间距修复.

#include "QtGuiApplication2.h"
#include "qscrollarea.h"
#include "CustomWidget.h"

QtGuiApplication2::QtGuiApplication2(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);

QScrollArea * qScrollArea = new QScrollArea();

CustomWidget * customWidget = new CustomWidget(this);
qScrollArea->setWidget(customWidget);
qScrollArea->setWidgetResizable(true);
qScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);

ui.mainLayout->addWidget(qScrollArea, 1, 1, 1, 1);
}
Run Code Online (Sandbox Code Playgroud)

CustomWidget类:

#include "CustomWidget.h"

#include "qlabel.h"

CustomWidget::CustomWidget(QWidget *parent) : QWidget(parent)
{
labelsNum = 4;
rows = 2;
layout = new QGridLayout();
this->setLayout(layout);
QMargins * margin = new QMargins(10, 10, 10, 10);
layout->setContentsMargins(*margin);
layout->setHorizontalSpacing(5);
layout->setVerticalSpacing(5);
initLabels();
addLabels();
}

CustomWidget::~CustomWidget()
{
}

void …
Run Code Online (Sandbox Code Playgroud)

c++ qt qscrollarea qt5 qlayout

3
推荐指数
1
解决办法
1779
查看次数

标签 统计

c++ ×1

qlayout ×1

qscrollarea ×1

qt ×1

qt5 ×1