我想在标签中显示很多图标,但是由于图标的数量确实很高,我将需要能够在该标签中水平和垂直滚动。
我做了什么:我创建了一个ScrollArea,它具有水平和垂直滚动条以及一个标签。但是,它似乎不起作用。我在标签中写了一个很长的句子,但是滚动条不能移动标签中的内容。实际上,我认为滚动条仅与滚动区域相关,而与标签无关。
总结:我需要在窗体上放置一个固定大小的标签,以便能够水平和垂直滚动
。答案 0 :(得分:0)
这将帮助您一次滚动显示很多图片,并通过其尺寸来稳定。
.h文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class QLabel;
class QScrollArea;
class FlowLayout;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
void setImagePaths(const QStringList& paths);
private:
QScrollArea* m_area;
QVector <QLabel*> m_imagesLab;
FlowLayout *flowLayout;
};
#endif // MAINWINDOW_H
.cpp文件
#include "mainwindow.h"
#include "flowlayout.h"
#include <QScrollArea>
#include <QLabel>
#include <QVBoxLayout>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
m_area = new QScrollArea(this);
m_area->setWidgetResizable(true);
flowLayout = new FlowLayout;
QWidget* widget = new QWidget(this);
widget->setLayout(flowLayout);
m_area->setWidget(widget);
setCentralWidget(m_area);
}
void MainWindow::setImagePaths(const QStringList &paths)
{
foreach (QString path, paths) {
QLabel* lab = new QLabel(this);
lab->setPixmap(path);
flowLayout->addWidget(lab);
m_imagesLab.push_back(lab);
}
}
MainWindow::~MainWindow()
{
}
您可以在QT示例中找到 flowlayout.h
和flowlayout.cpp
Flow Layout 示例显示了如何为不同的窗口排列小部件 大小。
Flow Layout实现了可处理不同窗口大小的布局。 窗口小部件的位置根据应用程序的宽度而变化 窗口。