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 中,每一行都将有两个角色:foo
和 bar
。如果绘制,您将看到持续增加的 foo 和振荡的 bar。
QtApplicationManager 随带了许多组件,可作为数据源直接使用,包括
当 running 为 true 时,MonitorModel 将每隔 interval 毫秒调查其数据源,每次都创建一行,直到达到 maximumCount。一旦达到该值,就会丢弃最旧的行(第一个),以便每当有新行时都不会超过 count。新行始终追加到模型中,因此行按时间顺序从最旧的(索引 0)到最新的(索引 count-1)排列。
属性文档
[只读] count : int |
模型中的行数。它从零到 MonitorModel::maximumCount。
[默认值] dataSources : 列表<对象> |
MonitorModel 要使用的源数据列表。源数据可以是任何包含至少一个 roleNames
属性和 update()
函数的 QtObject。有关更多信息,请参阅上面的详细描述。
interval : 整数 |
在 MonitorModel::running 为真时,模型更新之间(以毫秒为单位)的间隔。默认值是 1000。
maximumCount : 整数 |
MonitorModel 保留的最大行数。当达到这个限制后,最旧的行开始被丢弃,为新行腾出空间。
running : 布尔值 |
当为真时,MonitorModel 将不断探测其数据源,每隔 MonitorModel::interval 毫秒添加新行。默认值是 false
。
通常只有当数据显示时,才将此属性设置为 true。
方法文档
清空模型,移除所有现有行。
另请参阅MonitorModel::count。
©2019 Luxoft Sweden AB。此处包含的文档贡献的版权归其各自的所有者所有。此文档受 GNU 自由文档许可证版本 1.3 的条款许可,由自由软件基金会发布。Qt 及其相应标志是芬兰和/或其他国家/地区的 The Qt Company Ltd. 的商标。所有其他商标均为其各自所有者的财产。