MonitorModel QML 类型

一种可以从各种来源获取数据并保留其值历史的模型。更多信息...

导入声明import QtApplicationManager 2.0

属性

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

    详细说明

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

    下面的代码示例显示了如何使用它来在简单的条形图中绘制系统的 CPU 负载

    import QtQuick 2.11
    import QtApplicationManager 2.0
    
    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 随带了许多组件,可作为数据源直接使用,包括

    running 为 true 时,MonitorModel 将每隔 interval 毫秒调查其数据源,每次都创建一行,直到达到 maximumCount。一旦达到该值,就会丢弃最旧的行(第一个),以便每当有新行时都不会超过 count。新行始终追加到模型中,因此行按时间顺序从最旧的(索引 0)到最新的(索引 count-1)排列。

    属性文档

    [只读] count : int

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

    另请参阅MonitorModel::maximumCountMonitorModel::clear


    [默认值] dataSources : 列表<对象>

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


    interval : 整数

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

    另请参阅MonitorModel::running


    maximumCount : 整数

    MonitorModel 保留的最大行数。当达到这个限制后,最旧的行开始被丢弃,为新行腾出空间。

    另请参阅MonitorModel::countMonitorModel::clear


    running : 布尔值

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

    通常只有当数据显示时,才将此属性设置为 true。

    另请参阅MonitorModel::interval


    方法文档

    clear()

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

    另请参阅MonitorModel::count


    对象 get(整数 index)

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


    ©2019 Luxoft Sweden AB。此处包含的文档贡献的版权归其各自的所有者所有。此文档受 GNU 自由文档许可证版本 1.3 的条款许可,由自由软件基金会发布。Qt 及其相应标志是芬兰和/或其他国家/地区的 The Qt Company Ltd. 的商标。所有其他商标均为其各自所有者的财产。