2013-10-21 3 views
2

나는 QScrollArea에 넣으려는 QDeclarativeView을 가지고 있습니다. 문제는 scrollarea가 작동하지 않는다는 것입니다. 선언적 관점을 얼마나 크게 설정했는지는 중요하지 않습니다. 스크롤 막대가 필요 없다는 것을 알 수없는 것처럼 스크롤 막대를 얻지 못합니다. 만약 내가 setVerticalScrollBarPolicy (Qt : : ScrollBarAlwaysOn); 스크롤 막대가 나타나지 않습니다.QScrollArea가 작동하지 않는다

QScrollArea* scroll = new QScrollArea(); 
    view = new QDeclarativeView(this); 
    view->setSource(QUrl::fromLocalFile(path)); 
    view->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); 

    view->setResizeMode(QDeclarativeView::SizeViewToRootObject); 
    scroll->setWidget(view); 
    scroll->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); 
    scroll->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn); 
    scroll->setWidgetResizable(true); 

나는 내용에 다른 크기를 시도하지만 qscrollview 같다 : myWidget가되어 나는이 레이아웃 여기 http://qt-project.org/doc/qt-4.8/layouts-borderlayout.html

myWidgets *editWidget = new myWidgets(pathToExe,viewerMgr, this); 
editWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 

를 사용 -

부모는 centralwidget 등의 BorderLayout에 삽입 내 위젯이 qscrollarea의 가시적 인 시각보다 클 때 감지하지 못합니다.

+0

에서 줌 기능에 대한 helpwidget

testHelpWidget::testHelpWidget(QString path,viewerManager *cMgr, QWidget *parent) : QWidget(parent) { QVBoxLayout *layout = new QVBoxLayout; scroll = new QScrollArea(this); testWidget = new testWidgets(path,cMgr,this); testWidget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); QObject::connect(testWidget,SIGNAL(zoomChanged()),this,SLOT(repaintZoom())); scroll->setWidget(qmlWidget); scroll->setWidgetResizable(true); scroll->setAlignment(Qt::AlignLeft); layout->addWidget(scroll); setLayout(layout); } void testHelpWidget::repaintZoom(){ scroll->viewport()->updateGeometry(); scroll->viewport()->update(); scroll->update(); } 

코드에 대한 코드입니다. view-> setSizePolicy (QSizePolicy :: Fixed, QSizePolicy :: Fixed);''view-> setSizePolicy (QSizePolicy :: Ignored, QSizePolicy :: Ignored);를''설정하면 스크롤 영역을 사용할 수 있습니다. 하지만 내 줌 기능을 사용할 수 없습니다. 그래서이 문제를 해결하는 데 여전히 문제가 있습니다. – Chaf

답변

1

이 문제를 해결하기 위해 qscrollarea를 보유한 도움말 클래스를 만들고 qscrollarea 뷰포트를 수정하는 것이 수정되었습니다. 는 여기에 내가 문제가 무엇인지는 scrollarea 또는 스크롤 영역의 내용의 크기가 제한되지 발견 testWidget

void testWidgets::zoom(double scale){ 
double tmp = scale/1; 
double reset = 1/previousScale; 
if(scale == previousScale){ 
    return; 
} 

view->scale(reset,reset); 
view->resize(view->sizeHint()*reset); 

view->scale(tmp,tmp); 
previousScale = scale; 

view->resize(view->sizeHint()*tmp); 
view->updateGeometry(); 
view->update(); 
emit zoomChanged(); 
} 
관련 문제