使用 PyQt 将基于 qml 的图表集成到现有的 ui

Posted

技术标签:

【中文标题】使用 PyQt 将基于 qml 的图表集成到现有的 ui【英文标题】:Using PyQt to integrate a qml based Chart to an existing ui 【发布时间】:2017-01-12 15:15:43 【问题描述】:

我正在使用 PyQt,其中包含旧版应用程序。在这个基于 UI 的应用程序中,我想添加在 qml 中定义的实时图表(比如使用 QtCharts)。我能够使用 QtQuick 2.0 和 QtQuick.Controls 加载基本的 qml 文件。但我无法使用 QtCharts 导入 qml 文件。

有没有其他更好的方法可以在 PyQt 应用程序上使用 qml 有效地绘制实时图形?

【问题讨论】:

【参考方案1】:

QtChart 解决方案(参考 creator 示例 qmloscilloscope)

在 QML 文件中以 QML LineSeries 对象作为参数调用 python 函数。仅 LineSeries 和 ScatterSeries 支持属性 useOpenGL。其他系列,例如 BarSeries,效率低于这两个系列。

QML 文件:

    LineSeries
        id: lineSeries
        name: "signal"
        useOpenGL: true
        axisX: ValueAxis 
            id: axisX
            min: 0
            max: 10
        
        axisY: ValueAxis 
            id: axisY
            min: 0
            max: 100
        
    
    Timer 
        interval: 1000/25
        running: true
        repeat: true
        onTriggered: modelSpectrum.update(lineSeries)
    

Python 文件:

...
@pyqtSlot(QObject)
def update(self, series):
    series.clear()
    for i in range(10):
        series.append(i, random.random()*100) 

【讨论】:

以上是关于使用 PyQt 将基于 qml 的图表集成到现有的 ui的主要内容,如果未能解决你的问题,请参考以下文章

使用刀片将 Angular5 集成到现有的 Laravel 项目中

PyQt5 中的前后端分离与 QML

PyQt5 和 QML 集成问题,“findChild”返回 AttributeError

将 grails 集成到现有的 Spring 应用程序中?

将 ngrx/Store 集成到现有的 Angular 项目中

如何将 Qt 集成到现有的 C++ 项目中