Qt:关于QAbstractScrollArea需要建筑建议

时间:2012-05-29 21:25:02

标签: qt

我想设计一个可滚动的"控制容器"小部件。含义,一个可滚动的视图,它可以包含实时控件(任何QWidget派生)。通过"实时控制"我的意思是,如果一个动画的QWidget派生在其中,我想看到动画,当我向上和向下滚动,同时子控件上下移动。

将这样的小部件基于" QAbstractScrollArea"是接近它的正确方法吗?我只是简单地添加控件作为孩子?将它们放在一列中?那够了吗?

修改

这是我的QAbstractScrollArea派生类的构造函数代码。为什么我没有看到可以滚动控件的滚动条? (根据我控制的高度,并非所有都在同一页面上可见)

// add controls


    QPushButton *a = new QPushButton(QString("a"), this);
    a->setGeometry(QRect(10,10,100,30));
    QPushButton *b = new QPushButton(QString("b"), this);
    b->setGeometry(QRect(10,40,100,30));
    QPushButton *c = new QPushButton(QString("c"), this);
    c->setGeometry(QRect(10,70,100,30));
    QPushButton *d = new QPushButton(QString("d"), this);
    d->setGeometry(QRect(10,100,100,30));
    QPushButton *e = new QPushButton(QString("e"), this);
    e->setGeometry(QRect(10,130,100,30));
    QPushButton *f = new QPushButton(QString("f"), this);
    f->setGeometry(QRect(10,160,100,30));
    QPushButton *g = new QPushButton(QString("g"), this);
    g->setGeometry(QRect(10,190,100,30));
    QPushButton *h = new QPushButton(QString("h"), this);
    h->setGeometry(QRect(10,220,100,30));

    this->addScrollBarWidget(new QScrollBar(this), Qt::AlignRight);
    setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);

1 个答案:

答案 0 :(得分:0)

基本上,这就够了。使用具体的QScrollArea类和通用容器小部件,然后将控件定位为容器的子级。

QScrollArea scrollArea;
QWidget container;

// Create controls and add them to container.

scrollArea.setWidget( &container );