MonitorModel QML 类型

可以从各种来源获取数据并保存其值的模型。 更多...

导入语句import QtApplicationManager 2.0

属性

  • count : int
  • dataSources : list
  • interval : int
  • maximumCount : int
  • running : bool
  • 方法

    详细描述

    MonitorModel 可以定期从各种来源获取数据并保存其值的 历史。其主要用途是作为一个模型,在图表中绘制历史数据以便于监控,例如 CPU 使用率图表。

    以下代码片段展示了如何使用它绘制一个简单的柱状图来表示系统 CPU 的负载

    import QtQuick
    import QtApplicationManager
    
    ListView {
        id: listView
        width: 400
        height: 100
        orientation: ListView.Horizontal
        spacing: (width / model.count) * 0.2
        clip: true
        interactive: false
    
        model: MonitorModel {
            id: monitorModel
            running: listView.visible
            CpuStatus {}
        }
    
        delegate: Rectangle {
            width: (listView.width / monitorModel.count) * 0.8
            height: model.cpuLoad * listView.height
            y: listView.height - height
            color: "blue"
        }
    }

    要将数据源添加到 MonitorModel 中,只需在模型中声明它,就像上面的例子中使用CpuStatus组件所做的那样。或者(例如,从命令式 JavaScript 代码)您也可以通过将它们分配给 MonitorModel 的dataSources属性来添加数据源。

    数据源可以是任何具有以下特性的QtObject

    • = 一个 roleNames 属性:这是一个字符串列表,命名了此数据源提供的作用域。那些作用域名称将在 MonitorModel 创建的每一行中可用。
    • roleNames 属性中提供的名称匹配的属性:MonitorModel 将在构建新模型行时查询它们的值。
    • = 一个 update() 函数:MonitorModel 在创建每个新的模型行之前将调用它,这样数据源就可以更新其属性的值。

    以下代码片段显示了 MonitorModel 使用以 QML 编写的自定义数据源

    MonitorModel {
        running: true
        QtObject {
            property var roleNames: ["foo", "bar"]
    
            function update() {
                // foo will have ever increasing values
                foo += 1;
    
                // bar will keep oscillating between 0 and 10
                if (up) {
                    bar += 1;
                    if (bar == 10)
                        up = false;
                } else {
                    bar -= 1;
                    if (bar == 0)
                        up = true;
                }
            }
    
            property int foo: 0
            property int bar: 10
            property bool up: false
        }
    }

    因此,在上面的 MonitorModel 中,每一行都将有两个作用域:foobar。如果将其绘制出来,你会看到一个不断增强的 foo 和一个振荡的 bar。

    QtApplicationManager 附带了许多组件,这些组件可以 readily用作数据源,具体如下:

    running 属性为 true 时,MonitorModel 将每 interval 毫秒探测其数据源一次,每次创建一个新行,直到达到 maximumCount。一旦达到该值,最旧的一行(第一个)将每当新行到来时被抛弃,以确保 count 不会超过 maximumCount。新行总是附加到模型中,因此行按时间顺序从最老(索引 0)到最新(索引 count-1)排列。

    属性文档

    count : int [只读]

    模型中的行数。范围从零到 MonitorModel::maximumCount

    另请参阅 MonitorModel::maximumCountMonitorModel::clear


    dataSources : list<object> [默认]

    MonitorModel 要使用的数据源列表。数据源可以是任何包含至少一个 roleNames 属性和一个 update() 函数的 QtObject。有关更多信息,请参见上述详细说明。


    interval : int

    MonitorModel::running 为真时,模型更新之间的间隔(毫秒)。默认值是 1000。

    另请参阅 MonitorModel::running


    maximumCount : int

    MonitorModel 保留的最大行数。一旦达到此限制,最旧的行开始被丢弃以为新行腾出空间。

    另请参阅 MonitorModel::countMonitorModel::clear


    running : bool

    当为真时,MonitorModel 将每隔 MonitorModel::interval 毫秒探测其数据源并添加新行。默认值是 false

    通常您只在该属性设置为 true 时显示数据。

    另请参阅 MonitorModel::interval


    方法文档

    clear()

    清空模型,删除所有现有行。

    另请参阅 MonitorModel::count


    object get(int index)

    返回由 index 指定的读取点的模型数据,作为 JavaScript 对象。 index 必须在 [0, count] 范围内;否则返回空对象。


    © 2024 The Qt Company Ltd。此处包含的文档贡献的版权归其所有者所有。此处提供的文档是根据 Free Software Foundation 发布的 GNU 自由文档许可证版本 1.3 的条款许可的。Qt 和相关标志是 The Qt Company Ltd. 在芬兰和/或全球其他国家的商标。所有其他商标都是其各自所有者的财产。