我想设计一个可滚动的"控制容器"小部件。含义,一个可滚动的视图,它可以包含实时控件(任何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);
答案 0 :(得分:0)
基本上,这就够了。使用具体的QScrollArea类和通用容器小部件,然后将控件定位为容器的子级。
QScrollArea scrollArea;
QWidget container;
// Create controls and add them to container.
scrollArea.setWidget( &container );