2013-10-10 2 views
5

키네틱 스크롤은 Qt로 모바일 애플리케이션을 개발하는 데 매우 중요하며, 기기에서 부드럽지 않다는 것을 알았다. (안드로이드 기기와 아이폰으로 시도). 그것은 약간 고르지, 한 위치에서 다음 위치로 점프하고 손가락 움직임을 따라 지연됩니다. 이것은 느리게 스크롤하려고 할 때 특히 눈에.니다. 장치의 다른 응용 프로그램은 특히 아이폰에서 훨씬 더 부드럽게 스크롤됩니다.QScroller 키네틱 스크롤이 부드럽 지 않다.

버튼이있는 QFrame (ui-> frame)으로 간단한 테스트 프로젝트를 만들었습니다. 단추가 QVBoxLayout에 추가됩니다. 이 프레임은 터치 이벤트에 반응하는 QcrollArea 개체에 추가됩니다. 그리고이 scrollArea가 QGridLayout에 추가되었습니다. 따라서 스크롤링은 수직 방향으로 만 이루어집니다.

나는 QFrame를 기반으로 내 클래스의 생성자에서이 코드를 가지고 : 내 코드에서 뭔가 잘못하고

ui->frame->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); 
ui->frame->setMinimumHeight(1000); 
ui->frame->setMaximumHeight(1000); 

m_scrollArea = new QScrollArea(); 

m_scrollArea->setWidget(ui->frame); 
m_scrollArea->setWidgetResizable(true); 
m_scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); 
m_scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); 

m_layout = new QGridLayout(); 
m_layout->addWidget(m_scrollArea); 
m_layout->setContentsMargins(0, 0, 0, 0); 
setLayout(m_layout); 

QScroller::grabGesture(m_scrollArea, QScroller::LeftMouseButtonGesture); 

오전과 나는이 일을 해결하기 위해 무엇을 할 수 있습니다. 다른 사람이 같은 일을 경험하고 있습니까? 내 응용 프로그램이 가능한 네이티브로 보이기를 원하며이 고르지 못한 스크롤은 실제로 정상적인 것이 아닙니다.

추가 정보가 필요하면 알려 드리겠습니다. 테스트 프로젝트를 어딘가에 업로드하고 필요한 경우 장치의 일부 화면 캡처를 추가하려고 할 수 있습니다.

내가 사용하고있는 Qt 버전은 Android 용 5.1.1이며 iOS 용 Qt 5.1.0RC1 자체 빌드입니다.

은 내가 DragStartDistance가 더 반응 스크롤합니다

QScrollerProperties sp; 
sp.setScrollMetric(QScrollerProperties::DragStartDistance, 0.001); 
sp.setScrollMetric(QScrollerProperties::ScrollingCurve, QEasingCurve::Linear); 
QScroller* qs = QScroller::scroller(m_scrollArea); 
qs->setScrollerProperties(sp); 

을 추가했다. 스크롤링 모양을 더 좋게 만들기 위해 조정할 수있는 다른 속성은 무엇입니까? GUI paintEvent()가 QEvent :: Scroll이 QScrollArea에서 수신 될 때마다 호출되지 않는다는 것을 알게되었습니다. QScrollArea는 고르지 못한 스크롤을 일으킬 수 있습니다. 따라서 QEvent :: Scroll을받을 때마다 GUI를 다시 칠하는 코드를 추가 했으므로 스크롤이 부드럽게 보이지만 안드로이드 장치에서는 완벽하지 않습니다.

그 외 어떤 시도를 할 수 있습니까?

내가 도와 줄 수있는 도움을 주시면 감사하겠습니다. 감사!

답변

6

문제의 해결책은 여기 qtcentre.org입니다. 내 게시물을 한번보세요. 제 QScroller가 잘 작동합니다! 여기

는 경우 링크 나누기 Qt는 코드입니다 :

ScrollPerPixel에보기의 verticalScrollMode을 설정해보십시오>

setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); 
+0

BartekR, 나는 용액으로 게시물을 업데이트 한 - 정도 나는 적어도 생각한다. 좋은 조언이 있으며 user3794624의 커뮤니티에 오신 것을 환영합니다. 그것도 적절한 사용자 이름으로 변경해야 할 때 :-). –

+1

이것은 실제로 다른 문제를 해결하는 데 도움이되었습니다. tableWidget이 스크롤 속도가 너무 빨라졌습니다. 스크롤 모드를 변경하기 전까지는. QScrollerProperties의 모든 설정은 실제로 도움이되지 못했습니다. –

관련 문제