2016-09-23 18 views
0

저는 QStandardItemModel을 가지고 있으며, 약 5000 행의 데이터가 있습니다. 일괄 적으로 QScrollArea에 데이터를 삽입하려고합니다. 삽입하면 성능이 매우 느려집니다. 따라서 QScrollArea의 뷰포트에서 필요할 때 데이터를 추가하려고합니다. 처음에는 QScrollArea에 500 개의 행을로드했습니다. 사용자가 스크롤하면 추가 데이터가 QScrollArea의 뷰포트에 추가되기를 원합니다.QScrollArea에 데이터를 동적으로 추가합니다.

누구나 이것에 대해 어떻게 생각하니?

+0

['fetchMore'] (https://doc.qt.io/qt-5/qtwidgets-itemviews-fetchmore-example.html)와 같은 것을 찾고 계십니까? – Mike

+0

코드 실행 프로필을 작성하고 어떤 함수 호출이 가장 많이 사용되는지 확인한 다음이를 최적화하는 방법을 결정해야합니다. 나에게 비슷한 케이스 인 QSortFilterProxyModel :: data 함수는 데이터를 해독하기 위해 많은 시간을 소비하므로 캐시하고 코드는 움직이기 시작했다. – AlexanderVX

+0

@Mike : Yupp "fetchMore"& "canFetchMore". 이미 Qt 예제를 살펴 봤지만 QScrollArea를 구현하는 방법을 모르겠습니다. – Sandy

답변

0

QScrollArea은 (http://doc.qt.io/qt-4.8/qscrollarea.html)이

QScrollBar* scroll = ui->scrollarea->verticalScrollBar(); 

같은 기능 그래서

QScrollBar * QAbstractScrollArea::verticalScrollBar() const 

당신이 얻을 수에게 스크롤 막대를 상속하고 addvalues에서 슬롯

QObject::connect(scroll , SIGNAL(valueChanged(int)) ,this , SLOT(addvalues(int))); 

에 값을 연결 슬롯을 사용하면 스크롤바 위치를 확인하고 필요한 경우 값을 추가 할 수 있습니다.

+0

나는 그것을 사용하려했지만 내 경우에는 커스텀 위젯 (2 QLabels & 1 QPushButton)을 추가하고 싶다. 나는 그것으로 놀아 보았지만 해결책을 찾지 못했습니다. – Sandy