2012-05-29 2 views
0

스크롤 가능한 "컨트롤 컨테이너"위젯을 디자인하고 싶습니다. 의미, 라이브 컨트롤 (QWidget 파생물)을 포함 할 수있는 스크롤 가능한보기. "라이브 컨트롤"에 의해 파생 된 애니메이션 QWidget이 배치 된 경우 하위 컨트롤이 위아래로 움직이는 동안 위아래로 스크롤 할 때 애니메이션을보고 싶습니다.Qt : QAbstractScrollArea와 관련된 아키텍처 조언

"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

기본적으로 충분합니다. 구체적인 QScrollArea 클래스와 일반 컨테이너 위젯을 사용하고 컨트롤을 컨테이너의 자식으로 배치합니다.

QScrollArea scrollArea; 
QWidget container; 

// Create controls and add them to container. 

scrollArea.setWidget(&container); 
+0

코드가 작동하지 않습니다. 때 "setWidget"내 전체 컨테이너가 사라지고 보이지 않는 상태로 유지됩니다. 그것이 없으면, 나는 그것을 볼 수 있지만 스크롤바는 없다. Mac에서 qt 4.7.4 사용. – JasonGenX

+1

[documentation] (http://doc.qt.nokia.com/4.7/qscrollarea.html#setWidget)은 "위젯을 추가 할 때 스크롤 영역이 보이면 명시 적으로 표시해야합니다."라고 말합니다. 또한 setWidget이 호출되기 전에 컨테이너 위젯의 레이아웃을 설정해야한다고 말합니다. 미안하지만, 전에는 몰랐어. 희망 그 작동! –

관련 문제