一种界面编程方法及系统技术方案

技术编号:29329963 阅读:16 留言:0更新日期:2021-07-20 17:47
本发明专利技术公开了一种界面编程方法及系统,包括:获取JSON格式的存储数据;利用图形编程语言将JSON格式的存储数据转换为树型结构数据以及与树型结构数据相对应的图像界面,用于根据在图像界面输入的界面数据的读取或存储指令,进行树型结构数据和JSON格式的存储数据的相互转换。优点:充分利用了图形编程语言与JSON的互通性,通过查找表和数据指针,打通了界面操作与数据库读写之间的双向通道,不仅提高了数据读写的效率,而且大大降低了软件开发的复杂度。

【技术实现步骤摘要】
一种界面编程方法及系统
本专利技术涉及一种界面编程方法及系统,属于计算机处理

技术介绍
Qt是一个跨平台图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,Qt很容易扩展,并且允许真正地组件编程。JSON是一种轻量级的数据交换格式。它基于ECMAScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言:易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。桌面软件开发的一个细节是要处理各种数据,当界面展示的时候需要获取数据,当界面操作或编辑后需要保存数据。一个软件,特别是中大型规模的软件,需要考虑数据读取和存储的效率,以及代码实现的复杂度。目前常用的做法是按照私有文件格式存储产物数据,根据软件功能设计不同的数据结构,造成代码不通用,程序复杂不好维护等问题。
技术实现思路
本专利技术所要解决的技术问题是克服现有技术的缺陷,提供一种界面编程方法及系统,提高数据读写的效率,降低软件开发的复杂度。为解决上述技术问题,本专利技术提供一种界面编程方法,包括:获取JSON格式的存储数据;利用图形编程语言将JSON格式的存储数据转换为树型结构数据以及与树型结构数据相对应的图像界面,用于根据在图像界面输入的界面数据的读取或存储指令,进行树型结构数据和JSON格式的存储数据的相互转换。进一步的,所述JSON格式的存储数据采用将JSON文件经过加密或压缩后的其他类型文件。进一步的,所述编程语言采用Qt图形编程语言、C++编译型语言、pythonl脚本型语言、Rubyl脚本型语言或Perl脚本型语言。进一步的,所述图像界面为采用树型结构组件制作的导航菜单。进一步的,所述树型结构组件为QTreeWidget组件和QTreeWidgetItem组件。进一步的,所述进行树型结构数据和JSON格式的存储数据的相互转换的过程包括:在利用QTreeWidget组件生成菜单树和利用QTreeWidgetItem组件生成菜单节点时,为每个菜单节点分配唯一码ID,并设置到该菜单节点的数据中;将菜单节点的ID和JSON格式的存储数据生成查找表;当在图像界面点击导航菜单时,先从菜单节点的数据中得到ID,然后根据查找表获取JSON格式的存储数据并传递到加载的菜单节点中;在菜单widget做的任何编辑或修改,直接保存到JSON格式的存储数据中。进一步的,所述导航菜单的树形结构与JSON格式的存储数据的目录不一致时,利用递归算法根据导航菜单的树形结构反向生成JSON格式的存储数据的目录。一种界面编程系统,包括:获取模块,用于获取JSON格式的存储数据;处理模块,用于利用图形编程语言将JSON格式的存储数据转换为树型结构数据以及与树型结构数据相对应的图像界面,用于根据在图像界面输入的界面数据的读取或存储指令,进行树型结构数据和JSON格式的存储数据的相互转换。进一步的,所述JSON格式的存储数据采用将JSON文件经过加密或压缩后的其他类型文件;所述编程语言采用Qt图形编程语言、C++编译型语言、pythonl脚本型语言、Rubyl脚本型语言或Perl脚本型语言;所述图像界面为采用树型结构组件制作的导航菜单;所述树型结构组件为QTreeWidget组件和QTreeWidgetItem组件。进一步的,所述处理模块包括:分配模块,用于在利用QTreeWidget组件生成菜单树和利用QTreeWidgetItem组件生成菜单节点时,为每个菜单节点分配唯一码ID,并设置到该菜单节点的数据中;生成模块,用于将菜单节点的ID和JSON格式的存储数据生成查找表;传递模块,用于当在图像界面点击导航菜单时,先从菜单节点的数据中得到ID,然后根据查找表获取JSON格式的存储数据并传递到加载的菜单节点中;保存模块,用于在菜单widget做的任何编辑或修改,直接保存到JSON格式的存储数据中。进一步的,所述处理模块还包括反向生成模块,用于在导航菜单的树形结构与JSON格式的存储数据的目录不一致时,利用递归算法根据导航菜单的树形结构反向生成JSON格式的存储数据的目录。本专利技术所达到的有益效果:充分利用了图形编程语言与JSON的互通性,通过查找表和数据指针,打通了界面操作与数据库读写之间的双向通道,不仅提高了数据读写的效率,而且大大降低了软件开发的复杂度。附图说明图1是本专利技术的菜单节点读取和存储的双向数据流示意图;图2是本专利技术中例举的简单菜单的JSON表示方式;图3是本专利技术中例举的简单菜单的界面效果。具体实施方式为使得本专利技术的专利技术目的、特征、优点能够更加的明显和易懂,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本专利技术一部分实施例,而非全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。如图1所示,一种界面编程方法,包括如下步骤:1)统一使用JSON格式的文件作为数据库文件,实际运用中可以对原始文件进行压缩或加密处理。2)JSON格式中的数组对应python语法中的列表,JSON格式中的对象对应python语法中的字典,二者具有高度兼容性。因此,在存储时文件格式用JSON,在使用时程序内存用python数据。3)基于python3和pyqt5实现图形界面,界面采用QTreeWidget实现导航菜单树,数据的读取和存储以该树形结构为基础。4)用QTreeWidgetItem的Data属性存储菜单节点的ID值,该ID值是一个动态生成的递增的整数,保证不重复就行。5)创建字典,key是菜单ID,value是菜单数据(指针类型)。6)当在软件界面点击导航菜单时,先从菜单节点的Data中得到菜单ID,然后根据ID查字典获取菜单数据指针并传递到加载的菜单widget中。7)在菜单widget做的任何编辑或修改,可以通过指向菜单数据的指针直接保存到JSON格式数据库中。当导航菜单的树形结构发生变化(增加,删除或移动树节点)与JSON数据库目录不一致时,可以根据前者反向生成后者,期间不会丢失任何数据。实施例先用JSON格式文件定义装置的菜单目录和数据结构,举一个简单例子:界面软件解析该JSON文件形成附图2的菜单和目录层次。形成菜单时用到了Qt的QTreeWidget和QTreeWidgetItem组件。目录不需要分配ID(都设为0),菜单A的ID分配为1,菜单B的ID分配为2,菜单C的ID分配为3,本文档来自技高网...

【技术保护点】
1.一种界面编程方法,其特征在于,包括:/n获取JSON格式的存储数据;/n利用编程语言将JSON格式的存储数据转换为树型结构数据以及与树型结构数据相对应的图像界面,用于根据在图像界面输入的界面数据的读取或存储指令,进行树型结构数据和JSON格式的存储数据的相互转换。/n

【技术特征摘要】
1.一种界面编程方法,其特征在于,包括:
获取JSON格式的存储数据;
利用编程语言将JSON格式的存储数据转换为树型结构数据以及与树型结构数据相对应的图像界面,用于根据在图像界面输入的界面数据的读取或存储指令,进行树型结构数据和JSON格式的存储数据的相互转换。


2.根据权利要求1所述的界面编程方法,其特征在于,所述JSON格式的存储数据采用将JSON文件经过加密或压缩后的其他类型文件。


3.根据权利要求1所述的界面编程方法,其特征在于,所述编程语言采用Qt图形编程语言、C++编译型语言、python脚本型语言、Ruby脚本型语言或Perl脚本型语言。


4.根据权利要求3所述的界面编程方法,其特征在于,所述图像界面为采用树型结构组件制作的导航菜单。


5.根据权利要求4所述的界面编程方法,其特征在于,所述树型结构组件为QTreeWidget组件和QTreeWidgetItem组件。


6.根据权利要求5所述的界面编程方法,其特征在于,所述进行树型结构数据和JSON格式的存储数据的相互转换的过程包括:
在利用QTreeWidget组件生成菜单树和利用QTreeWidgetItem组件生成菜单节点时,为每个菜单节点分配唯一码ID,并设置到该菜单节点的数据中;
将菜单节点的ID和JSON格式的存储数据生成查找表;
当在图像界面点击导航菜单时,先从菜单节点的数据中得到ID,然后根据查找表获取JSON格式的存储数据并传递到加载的菜单节点中;
在菜单widget做的任何编辑或修改,直接保存到JSON格式的存储数据中。


7.根据权利要求5所述的界面编程方法,其特征在于,所述导航菜单的树形结构与JSON格式的存储数据的目录不一致时,利用递归算法根据导航菜单的树形结...

【专利技术属性】
技术研发人员:张磊龙翔徐东方徐光学关继勇
申请(专利权)人:南京电研电力自动化股份有限公司特变电工南京智能电气有限公司南京爱睦能源自动化有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1