zhuzichu520 / FluentUI

FluentUI for QML
MIT License
3.39k stars 444 forks source link

SingleTask窗口多创建几个会导致主窗口卡顿 #372

Open windziyu opened 8 months ago

windziyu commented 8 months ago

SingleTask窗口里放了表格,定时添加数据。 原本都放在主窗口里,很卡,没想到放其他窗口,主界面也会卡。 不同窗口应该是不同线程运行的吧

zhuzichu520 commented 8 months ago

可以用QThread::currentThreadId()打印一下线程。都是在主线程中。。主线程中不要做太多逻辑运算,不然会卡,可以放到子线程中计算完在发信号到UI线程中展示出来。。或者通过QProcess再开一个App进程。。

windziyu commented 8 months ago

我只是接收串口的数据显示到表格里,还是1秒一次更新,怎么这么卡

windziyu commented 8 months ago

用WebEngineView显示chart.js会不会好一点?

zhuzichu520 commented 8 months ago

WebEngineView估计会更卡。。。

zhuzichu520 commented 8 months ago

绘制的数据量可能太多了,看能有啥优化不。。。

windziyu commented 8 months ago

不如qcustomplot一根,能不能兼容一下qcustomplot

zhuzichu520 commented 8 months ago

嗯,等有时间我去研究一下这个qcustomplot......

EveryOrigin commented 8 months ago

我只是接收串口的数据显示到表格里,还是1秒一次更新,怎么这么卡

我当前项目也是串口/TCP数据 接收 显示到表格 几万个数据也没卡呀。兄弟你用的什么表格...

zhuzichu520 commented 8 months ago

qml自带的表格组件,看看你是怎么刷新的?如果是直接改变dadaSource去刷新的话估计会很慢,因为要重新绘制表格。这块可能要拿到TableModel去进行改变数据,作一个局部刷新。。

windziyu commented 8 months ago

从chart.js官网找到了添加数据的方法 function addData(chart, label, newData) { chart.data.labels.push(label); chart.data.datasets.forEach((dataset) => { dataset.data.push(newData); }); chart.update(); }

windziyu commented 8 months ago

还有一个问题,如何加载chartjs的插件,实现放大缩小拖拽等功能

windziyu commented 8 months ago

嗯,等有时间我去研究一下这个qcustomplot......

最终还是改用了qcustomplot

jeffrey0326 commented 7 months ago

我用chartjs绘制折线图超过50个点,感觉就开始很卡了,大佬能分享下qcustomplot在qml中的用法吗?

EveryOrigin commented 7 months ago

我用chartjs绘制折线图超过50个点,感觉就开始很卡了,大佬能分享下qcustomplot在qml中的用法吗?

xd 推荐一手EChart

[PySide6]QML WebEngine 联动EChart 生成动态折线图 - AtomDream的文章 - 知乎 https://zhuanlan.zhihu.com/p/674058048

windziyu commented 7 months ago

我用chartjs绘制折线图超过50个点,感觉就开始很卡了,大佬能分享下qcustomplot在qml中的用法吗?

https://blog.csdn.net/qq_24890953/article/details/106055644