社区
Qt
帖子详情
QML ListView 中model定时刷新问题
iamweirdo
2014-11-04 05:13:45
现有一个项目,需要实时读取数据,显示出来。
我用C++ 写了一个Model , 定时读取数据、刷新,让后将这个Model注册进QML,在QML中通过ListView显示。
现在的问题是,Model每次刷新数据后,ListView显示的部分都会跳转回第一行。
请大神帮忙
...全文
989
3
打赏
收藏
QML ListView 中model定时刷新问题
现有一个项目,需要实时读取数据,显示出来。 我用C++ 写了一个Model , 定时读取数据、刷新,让后将这个Model注册进QML,在QML中通过ListView显示。 现在的问题是,Model每次刷新数据后,ListView显示的部分都会跳转回第一行。 请大神帮忙
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
iamweirdo
2014-11-05
打赏
举报
回复
Model为从 QAbstractListModel 继承的类, 通过 qmlRegisterType<YCRealTimeDataModel>("my.QML.Model", 1, 0, "YCRealTimeDataModel") 注册 今天我通过 Timer中这么调用能实现, onTriggered: { currentPos = ycRealTimeDataList.indexAt(ycRealTimeDataList.contentX, ycRealTimeDataList.contentY) ycRealTimeDataModel.queryData() //Model定时1S中查询服务器中的数据 ycRealTimeDataList.positionViewAtIndex(currentPos, ListView.Beginning) } 但是还有一个问题就是当 ListView 中下拉到某一行的一半时,会有上下弹动的卡瑟情况,有办法
foruok
2014-11-04
打赏
举报
回复
要看你怎么刷新的,贴代码出来。
iamweirdo
2014-11-04
打赏
举报
回复
程序刚运行如下图,已经读取到了数据
然后我将ListView下拉到一定位置
之后Model刷新了数据,ListView又回到了第一行
Qt
qml
中
listview
列表视图控件(下拉
刷新
、上拉分页、滚动轴)
主要介绍了Qt
qml
中
listview
列表视图控件(下拉
刷新
、上拉分页、滚动轴) 的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
pulltorefreshhandler:
QML
PullToRefreshHandler组件
pulltorefreshhandler:
QML
PullToRefreshHandler组件
QML
ListView
数据修改
刷新
问题
1.
问题
在
QML
的
ListView
控件,再填充数据之后,我们有时候还需要对
model
中
的数据进行更改。可是,对
model
数据进行修改之后,
ListView
的数据并没有及时
刷新
出来。甚至有时候forceLayout()也没有作用。 2.解决办法 我们可以获取
ListView
对象的委托item,通过修改item的属性及时达到
刷新
的目的。 例如
QML
如下:
ListView
{ id: layer_...
QML
ListView
实现下拉
刷新
上拉加载
QML
ListView
实现下拉
刷新
和上拉加载。
qml
中
listView
模型
刷新
,解决index重置到开头
如果
qml
端是一个
qml
又附在一个
qml
上时,则使用function函数作为
qml
的属性句柄引出去,供下层界面调用,使用方法为,在下层槽函数
中
直接调用。如果想要保持界面位置维持不动,需要用一个变量conY来保存
刷新
前的位置。
刷新
后重新把contentY的值赋给
listview
。当用c++端模型时,有些界面上的显示操作,会由c++端来控制,这时就会使用到模型
刷新
,导致
listview
的index重置到开头。如果发出模型
刷新
信号的c++端和
qml
同属于一个界面时,可以直接使用信号和槽。记录一下,以备以后查阅。
Qt
16,817
社区成员
26,684
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章