2016-08-05 3 views
2

QAbstractItemView으로 표시된 모델 끝에 항목을 추가 할 때 가장 최근에 추가 된 항목을 보여주는 데이터 하단에보기를 유지하고 싶습니다. 기본 동작은 가장 최근에 표시된 항목의 위치를 ​​유지하지만 맨 아래에 있으면 스크롤하지 않습니다.항목을 추가 할 때 항목보기를 맨 아래로 스크롤하는 방법은 무엇입니까?

사용자가 이전에 맨 아래로 스크롤 한 경우 아래쪽에서보기를 유지하는 데 필요한 마법은 무엇이겠습니까?

답변

2
QListView view; 
bool viewAtBottom = false; 

항목을 추가하기 전에보기가 맨 아래로 스크롤되었는지 확인하십시오.

connect(view.model(), &QAbstractItemModel::rowsAboutToBeInserted, 
     &view, [&] { 
    auto bar = view.verticalScrollBar(); 
    viewAtBottom = bar ? (bar->value() == bar->maximum()) : false; 
}); 

항목을 삽입 한 후 항목이 추가되기 전에보기가 이전에 하단에 있었던 경우 하단으로 스크롤하십시오.

connect(view.model(), &QAbstractItemModel::rowsInserted, 
     &view, [&]{ if (viewAtBottom) view.scrollToBottom(); });