CN113568765B - 客户端的开发方法和*** - Google Patents
客户端的开发方法和*** Download PDFInfo
- Publication number
- CN113568765B CN113568765B CN202110887412.1A CN202110887412A CN113568765B CN 113568765 B CN113568765 B CN 113568765B CN 202110887412 A CN202110887412 A CN 202110887412A CN 113568765 B CN113568765 B CN 113568765B
- Authority
- CN
- China
- Prior art keywords
- window
- module
- interface
- login
- script element
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000011161 development Methods 0.000 title claims abstract description 36
- 230000006870 function Effects 0.000 claims description 35
- 230000004044 response Effects 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 8
- 238000012795 verification Methods 0.000 claims description 8
- 230000008901 benefit Effects 0.000 abstract description 14
- 230000003993 interaction Effects 0.000 description 9
- 239000011800 void material Substances 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000011664 signaling Effects 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 238000009517 secondary packaging Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000009131 signaling function Effects 0.000 description 1
- 239000000344 soap Substances 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04842—Selection of displayed objects or displayed text elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/541—Client-server
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/545—Gui
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/549—Remote execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Multimedia (AREA)
- User Interface Of Digital Computer (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供了客户端的开发方法和***,执行主体为客户端,客户端获取用户的选择操作,根据选择操作启动QT窗口,并创建登录窗口和主窗口,通过浏览器脚本元素加载子模块调用第一接口,使登录窗口与主窗口进行窗口切换,浏览器脚本元素加载子模块根据选择操作获取操作事件,QT组件产生执行事件,浏览器脚本元素加载子模块根据操作事件或执行事件,调用第二接口完成功能或请求业务数据,可以提供更加开放的接口,并且兼顾了C(client)客户端和B(browser)客户端的优点。
Description
技术领域
本发明涉及计算机技术领域,尤其是涉及客户端的开发方法和***。
背景技术
在IT(Internet Technology,互联网技术)程序开发时,大规模应用的场景是服务端和客户端的形式。在中心机房部署服务器,提供核心服务,在用户使用的PC(PersonalComputer,个人计算机)终端上面部署一个客户端为用户提供服务。客户端使用网络通信技术与服务器进行数据交互,并且提供丰富的人机交互相关窗口界面,便于用户使用。
在传统的技术体系中,客户端有C(client)和B(browser)两种方式,各有优缺点。C的客户端,通常使用C++,Java等语言进行开发,其优点是具有主机的最高权限;其缺点是开发效率低下,维护成本高昂。B的客户端通常使用html+javascript方式,其优点是丰富的插件,较低的技术门槛,浏览器的底层技术的持续优化,让开发变得容易,让维护变得容易;其缺点是出于浏览器安全方面的考虑,基本无法获取较高的权限完成功能,比如无法录制内容到本地,而这部分内容恰恰是某些应用的核心需求,如会议终端需要录制会议到本地的功能。
QT是一种跨平台的C++应用程序开发框架,其提供了丰富的GUI(Graphical UserInterface,图形用户界面)工具箱来完成界面工作,提供了丰富的底层组件来完成相关数据处理工作(如websocket(基于TCP的全双工通信协议)、sql(structured querylanguage,结构化查询语言)、xml(extensible markup language,可扩展标记语言)、json(javaScript object notation,对象简谱)、http(hyper text transfer protocol,超文本传输协议)、udp(user datagram protocol,用户数据报协议)、tcp(transmissioncontrol protocol,传输控制协议)、image(图像)、nfc(near field communication,近场通信)、蓝牙、opengl(open graphics library,开放图形库)、媒体处理和web集成等)。但是其使用C++语言,就已经是C/S客户端,并且具有开发起点高,开发效率低,维护调试成本大的特点。但是QT由于集成了webengine(chromium谷歌浏览器内核),可以在GUI界面窗口上,显示web页面(html+javascript),这在一定程度上面,可以使用C/S的权限特性与B/S的快速开发特性,来完成特定的客户端功能,可以在一定程度上兼取B/S与C/S的优势。
但是QT只定义了基本的交互,并未提供更加开放的接口,需要程序开发技术人员进行二次封装使用。
发明内容
有鉴于此,本发明的目的在于提供了客户端的开发方法和***,可以通过QT封装架构进行客户端开发,可以提供更加开放的接口,并且兼顾了C(client)客户端和B(browser)客户端的优点。
第一方面,本发明实施例提供了客户端的开发方法,所述客户端包括QT窗口、浏览器脚本元素加载子模块和QT组件;所述方法包括:
获取用户的选择操作,所述选择操作包括点击操作;
根据所述点击操作启动所述QT窗口,并创建登录窗口和主窗口;
通过所述浏览器脚本元素加载子模块调用第一接口,使所述登录窗口与所述主窗口进行窗口切换;
所述浏览器脚本元素加载子模块根据所述选择操作获取操作事件;
所述QT组件产生执行事件;
所述浏览器脚本元素加载子模块根据所述操作事件或所述执行事件,调用第二接口完成功能或请求业务数据。
进一步的,所述第一接口包括第三接口和第四接口,所述通过所述浏览器脚本元素加载子模块调用第一接口,使所述登录窗口与所述主窗口进行窗口切换,包括:
当显示登录窗口时,将所述用户输入的登录信息发送给服务器,以使所述服务器对所述登录信息进行验证,得到响应信息;
接收所述服务器发送的响应信息,所述响应信息包括验证通过信息和token信息;
通过所述浏览器脚本元素加载子模块调用所述第三接口后,使所述登录窗口切换至所述主窗口,并将所述token信息发送给所述主窗口;
当所述选择操作为登出操作时,所述浏览器脚本元素加载子模块根据所述登出操作调用所述第四接口后,使所述主窗口切换至所述登录窗口。
进一步的,所述方法还包括:
当所述登录窗口切换至所述主窗口时,显示所述主窗口,隐藏所述登录窗口;
当所述主窗口切换至所述登录窗口时,显示所述登录窗口,隐藏所述主窗口。
进一步的,所述选择操作还包括页面加载操作,所述浏览器脚本元素加载子模块根据所述选择操作获取操作事件,包括:
所述浏览器脚本元素加载子模块根据所述页面加载操作获取所述操作事件;
或者,
所述浏览器脚本元素加载子模块根据所述点击操作获取所述操作事件。
进一步的,在所述QT组件产生执行事件后,所述方法还包括:
所述QT组件将所述执行事件发送给所述浏览器脚本元素加载子模块。
第二方面,本发明实施例提供了客户端的开发***,所述客户端包括QT窗口、浏览器脚本元素加载子模块和QT组件;所述***包括:
选择操作获取模块,用于获取用户的选择操作,所述选择操作包括点击操作;
创建模块,用于根据所述点击操作启动所述QT窗口,并创建登录窗口和主窗口;
切换模块,用于通过所述浏览器脚本元素加载子模块调用第一接口,使所述登录窗口与所述主窗口进行窗口切换;
操作事件获取模块,用于所述浏览器脚本元素加载子模块根据所述选择操作获取操作事件;
产生模块,用于所述QT组件产生执行事件;
调用模块,用于所述浏览器脚本元素加载子模块根据所述操作事件或所述执行事件,调用第二接口完成功能或请求业务数据。
进一步的,所述第一接口包括第三接口和第四接口,所述切换模块具体用于:
当显示登录窗口时,将所述用户输入的登录信息发送给服务器,以使所述服务器对所述登录信息进行验证,得到响应信息;
接收所述服务器发送的响应信息,所述响应信息包括验证通过信息和token信息;
通过所述浏览器脚本元素加载子模块调用所述第三接口后,使所述登录窗口切换至所述主窗口,并将所述token信息发送给所述主窗口;
当所述选择操作为登出操作时,所述浏览器脚本元素加载子模块根据所述登出操作调用所述第四接口后,使所述主窗口切换至所述登录窗口。
进一步的,所述***还包括:
第一显示模块,用于当所述登录窗口切换至所述主窗口时,显示所述主窗口,隐藏所述登录窗口;
第二显示模块,用于当所述主窗口切换至所述登录窗口时,显示所述登录窗口,隐藏所述主窗口。
第三方面,本发明实施例提供了电子设备,包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的方法。
第四方面,本发明实施例提供了具有处理器可执行的非易失的程序代码的计算机可读介质,所述程序代码使所述处理器执行如上所述的方法。
本发明实施例提供了客户端的开发方法和***,包括:获取用户的选择操作,所述选择操作包括点击操作;根据所述点击操作启动所述QT窗口,并创建登录窗口和主窗口;通过所述浏览器脚本元素加载子模块调用第一接口,使所述登录窗口与所述主窗口进行窗口切换;所述浏览器脚本元素加载子模块根据所述选择操作获取操作事件;所述QT组件产生执行事件;所述浏览器脚本元素加载子模块根据所述操作事件或所述执行事件,调用第二接口完成功能或请求业务数据,可以提供更加开放的接口,并且兼顾了C(client)客户端和B(browser)客户端的优点。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的客户端的开发方法流程图;
图2为本发明实施例一提供的QT封装架构示意图;
图3为本发明实施例二提供的登录窗口与主窗口的切换过程信令图;
图4为本发明实施例三提供的浏览器脚本元素加载子模块和QT组件交互过程信令图;
图5为本发明实施例四提供的客户端的开发***示意图。
图标:
1-选择操作获取模块;2-创建模块;3-切换模块;4-操作事件获取模块;5-产生模块;6-调用模块。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
C/S(Client/Server)开发架构中,Client使用C++、Java、VB和C#等语言开发,上述语言属于强类型语言,其编译、运行和调试都需要专用的工具,开发出的程序也是直接运行在计算机主机上,可以具有整个机器的所有权限,且语言本身对于获取数据的方式支持广泛,比如底层的tcp(transmission control protocol,传输控制协议)和udp(userdatagram protocol,用户数据报协议),应用层协议rtsp(real time streamingprotocol,实时流传输协议)和rtmp(real time messaging protocol,实时消息传输协议),其他组件及协议soap(simple object access protocol,简单对象访问协议)和rpc(remote procedure cell,远程过程调用)等。其调用的资源也是比较底层的资源,如可以控制cpu(central processing unit,中央处理器)、内存、显卡和usb(universal serialbus,通用串行总线)等硬件资源。但是上述语言的开发效率比较低。
B/S(Browser/Server)开发架构中,Browser使用html+javascript技术进行开发,在该技术体系下,诞生了如vue、require js的框架,以及底层模块(jquery)和组件框架(element ui),依托于Browser的强大支撑,B/S开发架构中的客户端变得开发容易。但是当遇到调用驱动程序和调用usb资源等情形时,就会变得无法实现;受限于浏览器本身的安全机制,当遇到需要读写磁盘,使用特定网络协议(http、https除外,这两者浏览器支持)接收和发送数据,特定***的com组件完成特定工作,启动***进程等情形时,就会变得无法实现。
QT是一种跨平台的C++应用程序开发框架,可以使用C/S的权限特性与B/S的快速开发特性,来完成特定的客户端功能,可以在一定程度上兼取B/S与C/S的优势。
但是QT只定义了基本的交互,并未提供更加开放的接口,需要程序开发技术人员进行二次封装使用。
本申请在一定程度上可以做到开发分离,即B/S开发与C/S开发天然隔离,可以进行并行开发工作,进一步提升开发效率,缩短开发时间,规定了一系列交互标准,可以天然进行各自独立迭代,即一个Qt组件的底层,需要技术优化的情况下,仅进行底层处置,接口部分不发生改变,让技术演进和版本管理变得更容易,通过文档的扩展,可以扩展各种类型组件,可以形成组件资源库,当组件积累到一定数量时,会产生复用效果,即一个组件的功能在多个产品客户端中使用,进一步产生了组件的累积效果,提升开发的可复用性,进一步减少开发工作量。
为便于对本实施例进行理解,下面对本发明实施例进行详细介绍。
实施例一:
本发明将QT封装的架构划分为多个层级,包括:QT窗口、浏览器脚本元素加载子模块和QT组件,除此之外,还包括QT浏览器功能子模块;
其中,QT窗口:为整个程序的入口,提供外层的窗口,其整个功能框架由QT提供,QT浏览器功能子模块是QT窗口的一个子显示Widget(微件);
浏览器脚本元素加载子模块(JS&Dom):为程序开发者为了实现具体功能,让QWebEngineView加载的具体页面代码,其整个功能依赖于开发的具体功能及开发者的具体工作;
QT组件(QT components):为一个基于本发明的一系列使用C++代码实现的功能模块,其应该遵循本发明的相关标准,提供具体的功能,并可以被JS&Dom使用;
QT浏览器功能子模块(QWebEngineView):为QT的一个功能模块,承载为一个窗口(作为Chrome内核浏览器的显示窗口)和一个channel(作为数据传递)。其整个功能框架由QT提供。
图1为本发明实施例一提供的客户端的开发方法流程图。
参照图1,执行主体为客户端,客户端包括QT窗口、浏览器脚本元素加载子模块、QT浏览器功能子模块和QT组件;该方法包括以下步骤:
步骤S101,获取用户的选择操作,选择操作包括点击操作;
步骤S102,根据点击操作启动QT窗口,并创建登录窗口和主窗口;
步骤S103,通过浏览器脚本元素加载子模块调用第一接口,使登录窗口与主窗口进行窗口切换;
这里,登录窗口用于显示登录页面,主窗口用于显示主体功能,第一接口为可供JS&Dom调用的接口,当登录窗口切换至主窗口时,显示主窗口,隐藏登录窗口;当主窗口切换至登录窗口时,显示登录窗口,隐藏主窗口;
步骤S104,浏览器脚本元素加载子模块根据选择操作获取操作事件;
具体地,操作事件包括内核自动调用的事件和窗口事件,其中,内核自动调用的事件可以为加载完成等,窗口事件可以为鼠标点击事件、键盘事件和游戏手柄事件等。
步骤S105,QT组件产生执行事件;
这里,QT组件产生执行事件后,再将执行事件发送给浏览器脚本元素加载子模块。其中,执行事件为通知。
步骤S106,浏览器脚本元素加载子模块根据操作事件或执行事件,调用第二接口完成功能或请求业务数据。
图2为本发明实施例一提供的QT封装架构示意图。
参照图2,以QT程序启动为框架,框架形成一个固化不变的部分;以QT components和JS&Dom开发为两个分线,分别进行各自的开发和功能演进;以QWebEngineView为桥梁,沟通QT components和JS&Dom,打通B/S和C/S之间的数据交互;以自定义的json协议为沟通标准,定义QT components和JS&Dom的使用标准和数据传递标准;以JS&Dom为客户端的管理核心,管理QT components、Server交互、界面显示;
具体地,QT窗口为程序的入口点,用户进行点击操作则启动QT窗口,并创建两个QWebEngineView:一个QWebEngineView用于处理登录问题,即登录窗口;另一个QWebEngineView用于显示主体功能,即主窗口;QWebEngineView根据全局配置文件,加载对应的JS&Dom,JS&Dom的配置形式为一个html(hyper text markup language,超文本标记语言)、htm(hyper text markup language,超文本标记语言)、asp(active server pages,动态服务器页面)和php(hypertext preprocessor,超文本预处理器)等的入口,其入口可以为本地资源文件(存储在本地的浏览器可以打开的网页页面),也可以为远端资源文件(存储在远端服务器上面的浏览器可以打开的网页页面);JS&Dom根据JS代码,对QTcomponents进行创建、控制、销毁操作,同时QT components在工作时,也会主动反馈相关信息给JS&Dom,让其进行向用户报告和反馈。
当QT窗口退出时,则整个程序会释放QWebEngineView和所有QT components。
本发明实施例提供了客户端的开发方法,执行主体为客户端,客户端获取用户的选择操作,根据选择操作启动QT窗口,并创建登录窗口和主窗口,通过浏览器脚本元素加载子模块调用第一接口,使登录窗口与主窗口进行窗口切换,浏览器脚本元素加载子模块根据选择操作获取操作事件,QT组件产生执行事件,浏览器脚本元素加载子模块根据操作事件或执行事件,调用第二接口完成功能或请求业务数据,可以提供更加开放的接口,并且兼顾了C(client)客户端和B(browser)客户端的优点。
实施例二:
图3为本发明实施例二提供的登录窗口与主窗口的切换过程信令图。
参照图3,执行主体为客户端,该方法包括以下步骤:
步骤S201,当显示登录窗口时,将用户输入的登录信息发送给服务器,以使服务器对登录信息进行验证,得到响应信息;
这里,登录信息包括用户名、密码、验证码等相关登录元素;
步骤S202,接收服务器发送的响应信息,响应信息包括验证通过信息和token信息;
这里,token信息为用户身份唯一标识;
步骤S203,通过浏览器脚本元素加载子模块调用第三接口后,使登录窗口切换至主窗口,并将token信息发送给主窗口;
这里,第三接口为slotLoginSuccess接口,主窗口的主体功能均需要在此页面显示,如果需要跳转页面,则需要将相关页面进行架构整合,整合到同一页面(使用requirejs(java script模块加载器)、vue相关技术容易达成),用于统一与QT进行交互,完成相关功能;
步骤S204,当选择操作为登出操作时,浏览器脚本元素加载子模块根据登出操作调用第四接口后,使主窗口切换至登录窗口;
这里,第四接口为slotLogout接口。当QT程序启动时,创建登录窗口和主窗口,默认登录窗口显示,主窗口隐藏,开启消息循环;用户登录时,通过配置加载登录窗口页面,通过JS&Dom认证通过,调用第三接口,确认认证成功,自动跳转到主窗口,同时隐藏登录窗口;用户登出时,点击主窗口登出,调用第四接口,调用成功后,显示登录窗口,同时隐藏主窗口;
具体地,QT窗口的登录窗口和主窗口的显示,整合到一个配置文件中,该配置文件描述了两个窗口的相关显示内容。其基本的格式如下:
其中,app_name:应用程序名字,用于显示到窗口标题栏,不同的程序需要进行不同的定制,改名字也会影响QT的全局配置(windows于注册表中,linux与用户配置中)名称,可以进行更好的客户端管理;baseUnmuxPort:应用程序特定功能的私有配置,供部分组件使用;baseMuxPort:应用程序特定功能的私有配置,供部分组件使用;start:登录窗口相关配置;main:主窗口相关配置;url:窗口加载的页面的url地址。其中url的合法格式有如下(文件后缀不限):/home/web/index.html–绝对路径地址,windows形如D:\web\index.html;./web/index.html–相对程序运行目录的地址;http://192.168.1.101/web/index.html--基于http的网络地址;https://192.168.1.102/web/index.html--基于https的网络地址;x:窗口相对于屏幕的水平起始位置。当mode为normal时有效;y:窗口相对于屏幕的垂直起始位置。当mode为normal时有效;width:窗口的宽度。当mode不为full时有效;height:窗口的高度。当mode不为full时有效;mode:显示模式;center:居中显示:其中宽度和高度按照配置执行,如果大于屏幕分辨率则执行屏幕分辨率;normal:按照坐标显示:其中坐标如果超出屏幕分辨率,默认设置为0,如果宽度和高度大于屏幕分辨率,则使用屏幕分辨率;full:全屏显示:忽略坐标和宽高参数,默认充满屏幕;bak_image:背景图片设置,此处涉及一个技术壁垒,当需要在QWebEngineView之上,浮动Qt窗口时,需要使用OpenGL技术进行显示时,由于QT平台框架的机制问题,如果此时在JS&Dom层为整个Browser设置背景图片,则背景图片将会覆盖浮动的QT窗口,但是背景图片通常是整个客户端的一个重要要求,故将背景图片在QT的GUI层进行设置,以让其显示而不会覆盖QWebEngineView之上的浮动窗口。
本实施例中,当显示登陆窗口时,将用户输入的登陆信息发送给服务器,以使服务器对登陆信息进行验证,得到响应信息;接收服务器发送的响应信息,响应信息包括验证通过信息和token信息;通过浏览器脚本元素加载子模块调用第三接口后,使登陆窗口切换至主窗口,并将token信息发送给主窗口;当选择操作为登出操作时,浏览器脚本元素加载子模块根据登出操作调用第四接口后,使主窗口切换至登陆窗口。
实施例三:
图4为本发明实施例三提供的浏览器脚本元素加载子模块和QT组件交互过程信令图。
参照图4,该方法包括以下步骤:
步骤S301,浏览器脚本元素加载子模块根据选择操作获取操作事件,其中,选择操作包括页面加载操作和点击操作;
这里,浏览器脚本元素加载子模块根据页面加载操作获取操作事件;或者,浏览器脚本元素加载子模块根据点击操作获取操作事件;其中,QT窗口与浏览器脚本元素加载子模块交互时,使用QT反向通知,当QT窗口完成统计个数等功能时,调用QT反向通知主窗口;
步骤S302,浏览器脚本元素加载子模块调用server接口向服务器发送请求信息;
这里,当浏览器脚本元素加载子模块向服务器发送请求信息后,服务器会向浏览器脚本元素加载子模块发送响应信息。其中,第二接口可以为server接口。
步骤S303,浏览器脚本元素加载子模块根据数据创建或控制或销毁QT组件;其中,QT组件可以为播放器和冰箱等可以控制的设备;
步骤S304,QT组件产生执行事件;
步骤S305,QT组件将执行事件发送浏览器脚本元素加载子模块;
步骤S306,浏览器脚本元素加载子模块调用server接口完成功能或请求业务数据。
具体地,QT提供了QWebChannel用于和QWebEngineView进行交互,这个类中定义的信号槽函数(slot),可以被封装的js(javascript)代码,直接进行调用;这个类提供的信号函数(signal)可以直接调用JS&DOM方法。基于QT提供的消息通道机制,对QWebChannel进行继承,提供一批全局方法,用于通用功能需求(登录窗口和主窗口共同的功能需求)。需要专门为登录窗口和主窗口提供QWebChannel,提供特定的功能需求扩展。
进一步的,基于之上描述,需要提供三个QWebChannel的子类:ChannelBase、LoginChannel、MainChannel。ChannelBase提供通用功能接口;LoginChannel提供登录需要的功能接口(即主窗口和登录窗口);MainChannel提供主窗口需要的功能接口,LoginChannel和MainChannel继承ChannelBase,使其同时具有通用功能接口和各自特定的功能接口。
进一步的,ChannelBase提供主要接口拟定如下:
//设置缓存,使用键值对作为参数,将数据存储在主机内存中,此接口为QT提供给Browser使用使其可以将一些数据存储到内存中,用于不同的窗口间传递数据。当程序重启,则存储的数据消失;
void slotSetCache(const QString&key,const QString&val);
//获取缓存数据,通过主键将存储的缓存数据,取出,并返回给js使用;
QString slotGetCache(const QString&key);
//删除已经设置的缓存数据;
void slotDelCache(const QString&key);
//设置配置数据,使用键值对作为参数,将数据存储在主机磁盘中,此接口为QT提供给Browser使用使其可以将一些数据存储到磁盘中,可以用于不同窗口间传递数据当程序重启时,存储数据不消失;
void slotSetConfig(const QString&key,const QString&val);
//获取配置数据,JS&DOM调用该接口,获取配置数据;
QString slotGetConfig(const QString&key);
//用于其他窗口,向主窗口的JS&DOM传递数据;
void slotNotifyMain(const QString&msg);
//用于其他窗口,向登陆窗口的JS&DOM传递数据
void slotNotifyLogin(const QString&msg);
//探测使用本机ip的路由,remoteAddr格式为:192.168.1.100:8080。返回值为本机使用的ip地址
QString slotDetectLocalIp(const QString&remoteAddr);
进一步的,LoginChannel提供的接口拟定如下:
//当登陆认证成功后,需要调用该接口,跳转到主窗口,该接口参数为主窗口的url的查询参数,主窗口的JS&DOM可以直接获取到该参数并处置,例如:
//mainUrl:http://192.168.1.100/web/index.html
//queryString:session=123&id=32&name=test
//则访问的最终地址为:
//http://192.168.1.100/web/index.html?session=123&id=32&name=test
void slotLoginSuccess(const QString&queryString);
进一步的,MainChannel提供的接口拟定如下:
//根据参数创建一个组件,返回一个JS&DOMon,其中包含组件的ID;该接口由JS&DOM调用
//每一个组件的含义是一个C++的功能模块,其输入使用json参数传递,其管理使用ID
QString slotCreateComponent(const QString¶m);
//根据组件ID,控制组件,返回控制结果;
//控制C++的功能组件模块,不同的组件扩展不同的param参数;
bool slotControlComponent(const QString&id,const QString¶m);
//根据组件ID,销毁组件;
void slotDestroyComponent(const QString&id);
//登出当前,销毁所有的创建的组件,并显示登陆页;
void slotLogout();
//准备全局资源,如驱动程序的初始化过程等,该接口由JS&DOM调用,且仅调用一次,在所有组件创建之前调用;
//不同的全局资源类型,使用param参数进行扩展;
//返回值true成功,false失败;
bool slotPrepareGlobalResource(const QString¶m);
进一步的,QT反向通知使用signal,其定义格式如下:
void notifyFromQtToJs(const QString¶m);
//不同组件的通知,使用param参数进行扩展;
进一步的,QT接口其扩展参数对应的接口为MainChannel的slotCreateComponent,slotControlComponent的参数:
创建组件的参数(slotCreateComponent参数):
//type:组件类型,可扩展字符串,如udp、player、file等;param:实际参数,如果参数为数组,则应该在param对象中进行定义数组子结构;
创建组件返回的结果:
//type:组件类型,与传入对应参数一致;id:组件id值,后续的控制均使用该id;param:实际返回的参数数据;
修改组件的参数(slotControlComponent的param参数):
//type:组件类型;cmd:组件控制命令,可根据实际情况扩展;其他:其他参数为非必要参数,根据cmd情况,各个组件自行扩展实现;返回值为bool类型,即成功和失败;
全局资源参数(slotPrepareGlobalResource):
//type:组件类型;param:全局组件资源的参数
返回通知的参数(notifyFromQtToJs的param参数)
//type:组件类型;com_id:发生通知事件的组件ID号;param:通知的消息体,通过不同的组件类型进行扩展。
实施例四:
图5为本发明实施例四提供的客户端的开发***示意图。
参照图5,执行主体为客户端,该***包括选择操作获取模块1、创建模块2、切换模块3、操作事件获取模块4、产生模块5、调用模块6。
选择操作获取模块1,用于获取用户的选择操作,选择操作包括点击操作;
创建模块2,用于根据点击操作启动QT窗口,并创建登陆窗口和主窗口;
切换模块3,用于通过浏览器脚本元素加载子模块调用第一接口,使登陆窗口与主窗口进行窗口切换;
操作事件获取模块4,用于浏览器脚本元素加载子模块根据选择操作获取操作事件;
产生模块5,用于QT组件产生执行事件;
调用模块6,用于浏览器脚本元素加载子模块根据操作事件或执行事件,调用第二接口完成功能或请求业务数据。
进一步的,第一接口包括第三接口和第四接口,切换模块3具体用于:
当显示登录窗口时,将用户输入的登录信息发送给服务器,以使服务器对登录信息进行验证,得到响应信息;
接收服务器发送的响应信息,响应信息包括验证通过信息和token信息;
通过浏览器脚本元素加载子模块调用第三接口后,使登录窗口切换至主窗口,并将token信息发送给主窗口;
当选择操作为登出操作时,浏览器脚本元素加载子模块根据登出操作调用所述第四接口后,使主窗口切换至登录窗口。
进一步的,该***还包含:
第一显示模块(未示出),用于当登陆窗口切换至主窗口时,显示主窗口,隐藏登陆窗口;
第二显示模块(未示出),用于当主窗口切换至登陆窗口时,显示登陆窗口,隐藏主窗口。
在本发明实施例提供了客户端的开发***,执行主体为客户端,客户端获取用户的选择操作,根据选择操作启动QT窗口,并创建登录窗口和主窗口,通过浏览器脚本元素加载子模块调用第一接口,使登录窗口与主窗口进行窗口切换,浏览器脚本元素加载子模块根据选择操作获取操作事件,QT组件产生执行事件,浏览器脚本元素加载子模块根据操作事件或执行事件,调用第二接口完成功能或请求业务数据,可以提供更加开放的接口,并且兼顾了C(client)客户端和B(browser)客户端的优点。
本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例提供的客户端的开发方法的步骤。
本发明实施例还提供一种具有处理器可执行的非易失的程序代码的计算机可读介质,计算机可读介质上存储有计算机程序,计算机程序被处理器运行时执行上述实施例的客户端的开发方法的步骤。
本发明实施例所提供的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (8)
1.一种客户端的开发方法,其特征在于,应用于客户端,所述客户端包括QT窗口、浏览器脚本元素加载子模块和QT组件;所述方法包括:
获取用户的选择操作,所述选择操作包括点击操作;
根据所述点击操作启动所述QT窗口,并创建登录窗口和主窗口;
通过所述浏览器脚本元素加载子模块调用第一接口,使所述登录窗口与所述主窗口进行窗口切换;
所述浏览器脚本元素加载子模块根据所述选择操作获取操作事件;
所述QT组件产生执行事件;
所述浏览器脚本元素加载子模块根据所述操作事件或所述执行事件,调用第二接口完成功能或请求业务数据;
所述第一接口为可供JS&Dom调用的接口;
所述第一接口包括第三接口和第四接口,所述通过所述浏览器脚本元素加载子模块调用第一接口,使所述登录窗口与所述主窗口进行窗口切换,包括:
当显示登录窗口时,将所述用户输入的登录信息发送给服务器,以使所述服务器对所述登录信息进行验证,得到响应信息;
接收所述服务器发送的响应信息,所述响应信息包括验证通过信息和token信息;
通过所述浏览器脚本元素加载子模块调用所述第三接口后,使所述登录窗口切换至所述主窗口,并将所述token信息发送给所述主窗口;
当所述选择操作为登出操作时,所述浏览器脚本元素加载子模块根据所述登出操作调用所述第四接口后,使所述主窗口切换至所述登录窗口。
2.根据权利要求1所述的客户端的开发方法,其特征在于,所述方法还包括:
当所述登录窗口切换至所述主窗口时,显示所述主窗口,隐藏所述登录窗口;
当所述主窗口切换至所述登录窗口时,显示所述登录窗口,隐藏所述主窗口。
3.根据权利要求1所述的客户端的开发方法,其特征在于,所述选择操作还包括页面加载操作,所述浏览器脚本元素加载子模块根据所述选择操作获取操作事件,包括:
所述浏览器脚本元素加载子模块根据所述页面加载操作获取所述操作事件;
或者,
所述浏览器脚本元素加载子模块根据所述点击操作获取所述操作事件。
4.根据权利要求1所述的客户端的开发方法,其特征在于,在所述QT组件产生执行事件后,所述方法还包括:
所述QT组件将所述执行事件发送给所述浏览器脚本元素加载子模块。
5.一种客户端的开发***,其特征在于,应用于客户端,所述客户端包括QT窗口、浏览器脚本元素加载子模块和QT组件;所述***包括:
选择操作获取模块,用于获取用户的选择操作,所述选择操作包括点击操作;
创建模块,用于根据所述点击操作启动所述QT窗口,并创建登录窗口和主窗口;
切换模块,用于通过所述浏览器脚本元素加载子模块调用第一接口,使所述登录窗口与所述主窗口进行窗口切换;
操作事件获取模块,用于所述浏览器脚本元素加载子模块根据所述选择操作获取操作事件;
产生模块,用于所述QT组件产生执行事件;
调用模块,用于所述浏览器脚本元素加载子模块根据所述操作事件或所述执行事件,调用第二接口完成功能或请求业务数据;
所述第一接口为可供JS&Dom调用的接口;
所述第一接口包括第三接口和第四接口,所述切换模块具体用于:
当显示登录窗口时,将所述用户输入的登录信息发送给服务器,以使所述服务器对所述登录信息进行验证,得到响应信息;
接收所述服务器发送的响应信息,所述响应信息包括验证通过信息和token信息;
通过所述浏览器脚本元素加载子模块调用所述第三接口后,使所述登录窗口切换至所述主窗口,并将所述token信息发送给所述主窗口;
当所述选择操作为登出操作时,所述浏览器脚本元素加载子模块根据所述登出操作调用所述第四接口后,使所述主窗口切换至所述登录窗口。
6.根据权利要求5所述的客户端的开发***,其特征在于,所述***还包括:
第一显示模块,用于当所述登录窗口切换至所述主窗口时,显示所述主窗口,隐藏所述登录窗口;
第二显示模块,用于当所述主窗口切换至所述登录窗口时,显示所述登录窗口,隐藏所述主窗口。
7.一种电子设备,包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至4任一项所述的方法。
8.一种具有处理器可执行的非易失的程序代码的计算机可读介质,其特征在于,所述程序代码使所述处理器执行所述权利要求1至4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110887412.1A CN113568765B (zh) | 2021-08-03 | 2021-08-03 | 客户端的开发方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110887412.1A CN113568765B (zh) | 2021-08-03 | 2021-08-03 | 客户端的开发方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113568765A CN113568765A (zh) | 2021-10-29 |
CN113568765B true CN113568765B (zh) | 2023-12-26 |
Family
ID=78170131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110887412.1A Active CN113568765B (zh) | 2021-08-03 | 2021-08-03 | 客户端的开发方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113568765B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955427A (zh) * | 2019-11-19 | 2020-04-03 | 江苏艾佳家居用品有限公司 | 一种用于桌面端软件的自适应融合界面实现方法 |
CN112256244A (zh) * | 2020-11-17 | 2021-01-22 | 深圳市哈哈丫丫互联网有限公司 | 一种极速简约绿色Linux浏览器的创新技术 |
CN112416345A (zh) * | 2020-11-16 | 2021-02-26 | 中国电子科技集团公司第二十八研究所 | 一种通用客户端软件集成*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2017129475A (ru) * | 2017-08-18 | 2019-02-18 | Общество С Ограниченной Ответственностью "Нейроленд" | Система и способ для бесконтактного управления пользовательским интерфейсом |
-
2021
- 2021-08-03 CN CN202110887412.1A patent/CN113568765B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955427A (zh) * | 2019-11-19 | 2020-04-03 | 江苏艾佳家居用品有限公司 | 一种用于桌面端软件的自适应融合界面实现方法 |
CN112416345A (zh) * | 2020-11-16 | 2021-02-26 | 中国电子科技集团公司第二十八研究所 | 一种通用客户端软件集成*** |
CN112256244A (zh) * | 2020-11-17 | 2021-01-22 | 深圳市哈哈丫丫互联网有限公司 | 一种极速简约绿色Linux浏览器的创新技术 |
Also Published As
Publication number | Publication date |
---|---|
CN113568765A (zh) | 2021-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10613916B2 (en) | Enabling a web application to call at least one native function of a mobile device | |
CN108319483B (zh) | 网页处理方法、装置、终端及存储介质 | |
KR102220127B1 (ko) | 커스터마이징된 소프트웨어 개발 키트(sdk) 생성을 위한 방법 및 장치 | |
US10303748B2 (en) | Method and device for providing webpage browsing based on web browser engine kernel | |
CN110651252A (zh) | 内容管理***扩展 | |
EP3748500B1 (en) | Inversion-of-control component service models for virtual environments | |
EP3104279B1 (en) | Testing interactive network systems | |
US20140201619A1 (en) | Method And Device For Implementing Local Operation On Web Page | |
US7143359B2 (en) | Emulating advanced graphical user interface elements in a hypermedia content browser | |
US20140095974A1 (en) | Secure html javascript code snippet usage in application integration | |
US20130191726A1 (en) | Automatic widget creation apparatus and method for invoking heterogeneous web services in a composite application | |
CN103838558A (zh) | 网站建站***及方法、访问网站的方法及网页适配*** | |
CN113296653B (zh) | 一种仿真交互模型构建方法、交互方法及相关设备 | |
US10142446B2 (en) | Dialog server | |
US10728095B2 (en) | Client-configured server class tracing to a configurable threshold | |
CN112015383A (zh) | 一种登录方法和装置 | |
US20130282859A1 (en) | System and method for enabling the styling and adornment of multiple, disparate web pages through remote method calls | |
Chmielewski et al. | Application architectures for smart multi-device applications | |
CN113568765B (zh) | 客户端的开发方法和*** | |
Börger et al. | Contribution to a rigorous analysis of web application frameworks | |
WO2010017828A1 (en) | Secure browser-based access to web services | |
Wettinger et al. | Streamlining APIfication by generating APIs for diverse executables using any2API | |
Rebreniuk | Comparing HTML5 based apps with native apps | |
CN115269066B (zh) | 接口调用方法、设备及存储介质 | |
CN111078209B (zh) | 业务页面的开发处理方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |