在QT中使用多个小部件实现视图的最佳方法?

时间:2011-02-25 00:20:02

标签: qt qt4 symbian

我希望有一个视图,其中向用户显示各种QLabel,.jpg图像和项目列表(例如,QListView)。我希望所有这些都可以垂直滚动在一起。用于填充各种小部件的数据将由显示该视图的功能设置。我更喜欢在代码中实现它,而不使用GUI Designer。

我考虑过创建继承自QWidget的自定义小部件,但我发现很难实现它。这是最好的方法吗?

你能告诉我一个如何进行的例子吗?

提前致谢

1 个答案:

答案 0 :(得分:6)

//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);
}