提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|实施案例|编辑:鲍佳佳|2020-09-21 10:03:38.583|阅读 303 次
概述:本示例说明如何在带有Qt IVI Generator的qface文件中使用model类型来生成模型。它将解释有关如何使用model 类型及其内部工作方式的详细信息。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
Qt(发音为“ cute”,而不是“ cu-tee”)是一个跨平台框架,通常用作图形工具包,它不仅创建CLI应用程序中非常有用。而且它也可以在三种主要的台式机操作系统以及移动操作系统(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式设备,Android(Necessitas)和iOS的端口上运行。现在我们为你提供了免费的试用版。赶快点击下载Qt最新试用版吧>>
Qt IVI Generator通讯录示例本示例说明如何使用Qt IVI Generator生成模型。
介绍
本示例说明如何在带有Qt IVI Generator的qface文件中使用model类型来生成模型。
它将解释有关如何使用model 类型及其内部工作方式的详细信息。
演练该示例中使用的IDL文件代表一个地址簿API。它包含一个单独的界面,将联系人作为模型提供,并为实际联系人提供结构定义。
interface AddressBook { modelcontacts; void insertContact(int index, Contact contact); } struct Contact { string forename; string name; int phone; }
contact 属性被定义为
对于后端接口,属性类型不同,QIviPagingModelInterface指针是必需的,因为QIviPagingModel也是QtIvi功能,并且像所有功能一样,它使用后端接口进行前端-后端分离。有关更多信息,请参见概念和体系结构。
后端插件需要为每个公开的属性实现QIviPagingModelInterface类。该backend_simulator模板已经注意到了这一问题,并产生所有需要的代码。
配置模拟后端插件
默认情况下,生成的模拟后端不会填充模型的任何数据,因为模板不知道应提供什么内容。
对于此用例,可以使用默认注释将模拟器配置为提供静态模拟数据。
以下是在example-ivi-addressbook.yaml文件中完成的:
Example.IVI.AddressBook: config_simulator: simulationFile: "qrc:/plugin_resource/simulation.qml" Example.IVI.AddressBook.AddressBook#contacts: config_simulator: default: [[ "John", "Doe", "12345" ], [ "Jane", "Doe", "67890" ]]
分配给默认变量的JSON片段由Qt IVI Generator解析,并将用于生成模拟后端,该后端创建两个Contact实例,并将它们作为contact模型的内容返回。
演示申请演示应用程序不是自动生成的,而是与其他示例类似标准的QQmlEngine安装程序。
ListView { Layout.fillWidth: true Layout.fillHeight: true model: addressBook.contacts clip: true delegate: ItemDelegate { width: parent.width height: 100 text: model.item.forename + " " + model.item.name } }
使用contacts属性从地址簿对象中检索模型,并将其传递给ListView。委托可以使用QIviPagingModel的ItemRole访问实际的联系人,它通过model.item展示给QML 。
扩展仿真行为因为backend_simulator模板只能生成一个存根,所以它不知道应该为qface文件的insertContact函数实现什么行为。ivigenerator会简单地生成存根,并打印一条消息,指出该功能未实现。
通过使用SimulationFile批注告诉自动生成器我们要提供自己的仿真QML文件,可以解决此限制。
在示例中,simulationFile注释指向资源文件中的QML文件。资源文件像往常一样添加到项目文件中,如下所示:
RESOURCES += plugin_resource.qrc
自动生成的模拟后端代码使用QIviSimulationEngine从QML文件加载模拟行为。这个特殊的引擎确保将自动生成的后端接口提供给QML文件,并且可以从那里扩展它们。它还确保接口仅可用于此引擎实例,并且对于在同一进程(例如,前端)中运行的其他引擎不可用。
使用ivigenerator作为模拟后端,example.ivi.addressbook.simulation uri 中提供了模拟界面。所提供的类型以模拟后端实现的后端接口命名。对于我们的示例,注册了两种类型:
我们的模拟QML文件如下所示:
import QtQuick 2.0 import Example.IVI.AddressBook.simulation 1.0 Item { AddressBookBackend { id: backend property var settings : IviSimulator.findData(IviSimulator.simulationData, "AddressBook") function initialize() { print("AddressBookSimulation INITIALIZE") IviSimulator.initializeDefault(settings, backend) Base.initialize() } function insertContact(reply, index, contact) { print("BACKEND SIMULATION INSERT CONTACT") contacts.insert(index, contact); reply.setSuccess(true); } Component.onCompleted: { console.log("BACKEND SIMULATION CREATED") } } }
使用Component.onCompleted处理程序加载了QML代码,它将创建一个AddressBookBackend实例并打印一条消息。
为了实现insertContact函数的行为,将JS函数添加到QML中的AddressBookBackend对象。该函数带有三个参数,第一个是PendingReply对象,用于在请求成功或失败后通知前端。其他参数与IDL文件中定义的相同。
要将提供的联系人插入到我们的列表中,我们使用contacts属性,该属性保存contacts属性的QIviPagingModelInterface实现。此实现提供了一些额外的便捷功能,仿真可使用这些便捷功能轻松修改模型。在我们的例子中,我们只调用insert()函数,然后让自动生成的实现完成其余的工作。
本篇文章中的内容你都学会了吗?如果这篇文章没能满足你的需求、点击获取更多文章教程!现在立刻下载Qt免费试用吧!更多Qt类开发工具QtitanRibbon、QtitanChart、QtitanNavigation、QtitanDocking、QtitanDataGrid在线订购现直降1000元,欢迎咨询慧都获取更多优惠>>
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:TeeChart 为先进的数据集成和可视化工具 RivCross 提供了丰富的图表库,通过提供对水平定向钻井 (HDD) 操作至关重要的强大数据可视化功能增强了 RivCross。
灵犀文档通过嵌入 SpreadJS,文档系统完美复刻了 Excel 的UI架构,并有效提升了系统多人协作和数据处理效率。
GEOsens致力于研发“从传感器到互联网”的在线监测和控制系统,使用TeeChart超过15年,TeeChart 成为了GEOsens访问数据的关键元素,为决策提供了坚实的基础。
ActiveReports 报表降低系统与报表功能的耦合度,使系统的报表功能得以模块化;ActiveReports 报表本身的优良特性,也为系统打造更强的用户体验如虎添翼,如数据钻取、交叉报表、数据导出等。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢