掌桥专利:专业的专利平台
掌桥专利
首页

一种界面编程方法及系统

文献发布时间:2023-06-19 11:54:11


一种界面编程方法及系统

技术领域

本发明涉及一种界面编程方法及系统,属于计算机处理技术领域。

背景技术

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,以此类推。通过QTreeWidgetItem.setData(row,col,data)接口,将菜单ID设置到对应的QTreeWidgetItem。同时创建一个字典,将菜单ID作为key,菜单数据作为value,示例代码如下:

menu_map_dict={}

menu_map_dict[1]=menuA_dict

menu_map_dict[2]=menuB_dict

menu_map_dict[3]=menuC_dict

备注:字典中的菜单数据是个指针类型。

当在软件界面点击导航菜单时,先从菜单节点的Data中得到菜单ID,然后根据ID查字典获取菜单数据指针并传递到加载的菜单widget中,示例代码如下:

在菜单widget做的任何编辑或修改,可以通过指向菜单数据的指针直接保存到JSON格式数据库中。举例说明:首先,菜单A的界面可以得到正确的值,如附图3所示。接着将表格第1行第3列的数据修改为100,则执行如下代码:

由此可以看出,图形界面获取数据和写入数据的代码是非常简单且容易理解的,数据的处理是直接且高效的。

相应的本发明还提供一种界面编程系统,包括:

获取模块,用于获取JSON格式的存储数据;

处理模块,用于利用图形编程语言将JSON格式的存储数据转换为树型结构数据以及与树型结构数据相对应的图像界面,用于根据在图像界面输入的界面数据的读取或存储指令,进行树型结构数据和JSON格式的存储数据的相互转换。

所述JSON格式的存储数据采用将JSON文件经过加密或压缩后的其他类型文件;

所述图形编程语言采用C++编译型语言、python、Ruby或Perl脚本型语言;

所述图像界面为采用树型结构组件制作的导航菜单;

所述树型结构组件为QTreeWidget组件和QTreeWidgetItem组件。

所述处理模块包括:

分配模块,用于在利用QTreeWidget组件生成菜单树和利用QTreeWidgetItem组件生成菜单节点时,为每个菜单节点分配唯一码ID,并设置到该菜单节点的数据中;

生成模块,用于将菜单节点的ID和JSON格式的存储数据生成查找表;

传递模块,用于当在图像界面点击导航菜单时,先从菜单节点的数据中得到ID,然后根据查找表获取JSON格式的存储数据并传递到加载的菜单节点中;

保存模块,用于在菜单widget做的任何编辑或修改,直接保存到JSON格式的存储数据中。

所述处理模块还包括反向生成模块,

用于在导航菜单的树形结构与JSON格式的存储数据的目录不一致时,利用递归算法根据导航菜单的树形结构反向生成JSON格式的存储数据的目录。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • 一种集成测试系统图形化编程界面及其编程方法
  • 一种集成测试系统图形化编程界面及其编程方法
技术分类

06120113098939