Лучший способ реализовать представление с несколькими виджетами в QT? - PullRequest
2 голосов
/ 25 февраля 2011

Я хотел бы иметь представление, где я показываю пользователю различные QLabels, изображение .jpg и список элементов (например, QListView).Я хотел бы, чтобы все они могли вертикально прокручиваться вместе.Данные для заполнения различных виджетов будут установлены функцией, которая показывает это представление.Я предпочитаю реализовывать его в коде без использования GUI Designer.

Я думал о создании своего пользовательского виджета, унаследованного от QWidget, но мне сложно реализовать его.Это лучший способ сделать это?

Не могли бы вы дать мне пример того, как я должен действовать?

Заранее спасибо

1 Ответ

6 голосов
/ 09 марта 2011
//Using QScrollArea

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>
#include <QLabel>
#include <QScrollArea>
#include <QVBoxLayout>

class MyWidget: public QWidget
{
    Q_OBJECT
public:
    explicit MyWidget(QWidget *parent = 0);

private:
    QScrollArea *scrollArea;
    QWidget *widget;
    QLabel *label1;
    QLabel *label2;
    QLabel *label3;
    QVBoxLayout *vLayout;
};

#endif // MYWIDGET_H


#include "mywidget.h"

MyWidget::MyWidget(QWidget *parent) :
    QWidget(parent)
{
    scrollArea=new QScrollArea(this);
    widget=new QWidget;
    label1=new QLabel("Label1");
    label2=new QLabel("Label2");
    label3=new QLabel("Label3");

    label1->setFixedSize(200,100);
    label2->setFixedSize(200,100);
    label3->setFixedSize(200,100);
    vLayout=new QVBoxLayout;

    vLayout->addWidget(label1);
    vLayout->addWidget(label2);
    vLayout->addWidget(label3);
    widget->setLayout(vLayout);

    scrollArea->setWidget(widget);
    scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    scrollArea->resize(200,150);
}
...