Android QSCROLER动态滚动不平滑

Android QSCROLER动态滚动不平滑,android,ios,qt,Android,Ios,Qt,使用Qt开发移动应用程序时,动态滚动非常重要,我注意到在设备上(android设备和iphone都尝试过)滚动并不顺畅。它看起来有点起伏,从一个位置跳到下一个位置,并随着手指的移动而延迟。这是可见的,尤其是当试图滚动缓慢。这些设备中的其他应用程序的滚动更加平滑,尤其是在iphone中 我做了一个简单的测试项目,QFrame(ui->frame)只包含按钮。这些按钮将添加到QVBoxLayout。此帧添加到QcrollArea对象,该对象对触摸事件作出反应。这个滚动区域被添加到QGridLayou

使用Qt开发移动应用程序时,动态滚动非常重要,我注意到在设备上(android设备和iphone都尝试过)滚动并不顺畅。它看起来有点起伏,从一个位置跳到下一个位置,并随着手指的移动而延迟。这是可见的,尤其是当试图滚动缓慢。这些设备中的其他应用程序的滚动更加平滑,尤其是在iphone中

我做了一个简单的测试项目,QFrame(ui->frame)只包含按钮。这些按钮将添加到QVBoxLayout。此帧添加到QcrollArea对象,该对象对触摸事件作出反应。这个滚动区域被添加到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的Qt5.1.0RC1自建版本

我补充说

QScrollerProperties sp;
sp.setScrollMetric( QScrollerProperties::DragStartDistance,   0.001 );
sp.setScrollMetric( QScrollerProperties::ScrollingCurve, QEasingCurve::Linear );
QScroller* qs   = QScroller::scroller( m_scrollArea );
qs->setScrollerProperties( sp );
拖动开始距离使滚动更加灵敏。我可以微调哪些其他属性以使滚动看起来更好? 我还注意到,并非每次从QScrollArea接收QEvent::Scroll时都会调用GUI paintEvent(),我想这可能会导致不稳定的滚动。因此,每次我收到QEvent::Scroll时,我都添加了重新绘制GUI的代码,滚动看起来更平滑一些,但在android设备中仍然不完美

我还能试什么


如果你能给我任何帮助,我将不胜感激。谢谢

您的问题解决方案如下:。看看我在那里的帖子。我的QSCROLER现在工作得很好

以下是链接断开时的Qt代码:

尝试将视图的verticalScrollMode设置为ScrollPerPixel>

setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel);

BartekR,我已经用解决方案更新了帖子——至少我是这么认为的。这里有很好的建议,欢迎用户3794624加入社区。是时候把它改成一个合适的用户名了:-)。这实际上帮助我解决了一个不同的问题:tableWidget的滚动速度太快了,就是。。直到我改变了滚动模式。QScrollerProperties的任何设置都没有真正的帮助