基于QML动态切换的多视图停靠窗口系统及方法与流程

摘要: 本发明涉及通信测试,具体涉及基于qml动态切换的多视图停靠窗口系统及方法。背景技术:1、在测试仪器软件、集成开发环境、数据分析平台等复杂桌面应用中,用户通常需要...
基于QML动态切换的多视图停靠窗口系统及方法与流程

本发明涉及通信测试,具体涉及基于qml动态切换的多视图停靠窗口系统及方法。

背景技术:

1、在测试仪器软件、集成开发环境、数据分析平台等复杂桌面应用中,用户通常需要同时查看多个视图窗口(如频谱图、时域图、参数面板、数据表格等),并根据实际工作需求灵活调整窗口的排列方式、大小比例以及内容类型。为满足多视图查看需求,工业界广泛采用停靠窗口(dock window)框架,允许用户将窗口在固定停靠态与独立浮动态之间切换,并支持多窗口的分割排列。

2、但现有技术中,主流的停靠窗口实现方案主要包括两类。第一类是基于原生桌面框架的商业组件(如qt advanced docking system、avalondock),其内部维护复杂的窗口状态机和布局序列化机制,功能全面但体积庞大、集成复杂度高,且浮动窗口通常需要创建新的顶层窗口实例并重新挂载内容组件,存在状态恢复延迟和内存开销较大的问题。第二类是基于web技术的轻量实现(如goldenlayout、react-dock),其对浏览器渲染管线有强依赖,不适用于以qml/opengl为核心的嵌入式测试仪器软件场景。

3、更关键的是,现有方案在多窗口自适应布局方面普遍依赖用户手动拖拽排列,缺乏基于窗口宽高比约束的智能自动排列能力。同时,当用户需要更换某个窗口内显示的内容类型时(例如将频谱图切换为时域图),现有方案通常要求关闭当前窗口再新建窗口,流程繁琐且会丢失当前窗口的位置上下文。

4、因此,现需要一种轻量级、支持零实例切换浮动、具备智能自适应布局能力且允许视图内容运行时热切换的停靠窗口的基于qml动态切换的多视图停靠窗口系统及方法。

技术实现思路

1、本发明的主要目的在于提供基于qml动态切换的多视图停靠窗口系统及方法,以解决现有技术中存在的因架构厚重导致浮动切换开销大、多窗口布局依赖人工操作效率低下以及视图内容变更需重建窗口增加操作成本的技术问题。

2、为实现上述目的,本发明提供了基于qml动态切换的多视图停靠窗口系统,包括:

3、停靠控件模块、弹性分割器模块和停靠空间管理器模块,其中,停靠控件模块封装单个可停靠窗口的显示状态与行为,弹性分割器模块提供相邻可停靠窗口区域之间的可视化拖拽分割,停靠空间管理器模块管理多个停靠控件模块的布局空间。

4、进一步地,停靠控件模块维护一个视图管理器,视图管理器为停靠控件模块提供视图类型列表,停靠控件模块通过下拉菜单项从视图类型列表中选择视图类型,并将窗口视图切换至选择的视图类型。

5、进一步地,下拉菜单项包括视图切换子选项与新增窗口子选项,视图切换子选项对应视图类型列表中的各视图类型,新增窗口子选项被触发时提供视图类型列表,供用户选择并创建对应视图类型的可停靠窗口。

6、进一步地,弹性分割器模块基于qml splitview组件实现,弹性分割器模块包括多个弹性分割器实例,弹性分割器实例构成二叉树嵌套分割结构中的非叶节点,非叶节点划分相邻可停靠窗口区域的布局空间。

7、进一步地,停靠空间管理器模块通过二叉树嵌套分割结构组织窗口布局,并通过隐藏的后台管理器项维护一个弹性分割器实例数组作为splitter对象池。

8、进一步地,splitter对象池管理弹性分割器实例,具体为:

9、当布局需要弹性分割器时,优先从splitter对象池中获取已有的弹性分割器实例,重新配置实例的方向属性和比例属性后进行复用。

10、当splitter对象池为空时,通过组件工厂动态创建新的弹性分割器实例。

11、当布局需要移除弹性分割器时,将移除的弹性分割器实例归还至splitter对象池。

12、本发明还提供基于qml动态切换的多视图停靠窗口方法,具体包括如下步骤:

13、 s1,停靠控件模块预创建隐藏的无边框独立窗口对象作为浮动窗口,并将停靠控件模块的初始父容器设置为停靠空间管理器模块或弹性分割器模块。

14、s2,当多视图停靠窗口系统响应浮动指令时,对应可停靠窗口进入浮动态,当多视图停靠窗口系统响应停靠指令时,对应可停靠窗口进入停靠态。

15、s3,当多视图停靠窗口系统响应可停靠窗口增删指令时,停靠空间管理器模块重新计算可停靠窗口数量,调用智能网格布局算法生成最优行列布局,并通过splitter对象池创建或复用弹性分割器实例来构建二叉树嵌套分割结构。

16、进一步地,步骤s2具体包括如下步骤:

17、 s2.1,当可停靠窗口从停靠态切换至浮动态时,停靠控件模块将父容器切换至浮动窗口,并显示浮动窗口。

18、s2.2,当可停靠窗口从浮动态切换至停靠态时,隐藏浮动窗口,将停靠控件模块的父容器恢复至停靠空间管理器模块,并触发停靠空间管理器模块执行智能网格布局算法。

19、进一步地,步骤s3中智能网格布局算法具体包括如下步骤:

20、 s3.1,遍历窗口列表,筛选出可见且非浮动态的可停靠窗口,记录有效可停靠窗口数量及父容器宽高比。

21、s3.2,当有效可停靠窗口数量分别为1、2、3和4时,分别对应采用全屏布局、上下均分布局、上二下一布局和二乘二网格布局。

22、s3.3,当有效可停靠窗口数量大于等于5时,遍历所有候选网格布局,计算每个候选网格的可停靠窗口宽高比,并过滤掉不满足预设最小宽高比阈值的候选网格。

23、s3.4,对满足宽高比约束的候选网格,基于宽高比相对理想值的偏差度、空间利用率及行列均衡度进行加权评分,选取评分最高的候选网格作为最终布局方案,并通过弹性分割器实例进行最终布局构建,将可停靠窗口纳入最终布局。

24、s3.5,若无任何网格满足最小宽高比约束,则采用逐行递减列数的保守策略,优先保证可停靠窗口宽高比满足最小约束。

25、进一步地,步骤s3.4中,通过弹性分割器实例进行最终布局构建具体包括如下步骤:

26、 s3.4.1,按行方向获取弹性分割器实例作为行分割器,每个行分割器的分割比例为1除以剩余行数,多个行分割器构成行分割器链。

27、s3.4.2,对每一行按列方向获取弹性分割器实例作为列分割器,每个列分割器的分割比例为1除以每行剩余列数,多个列分割器构成列分割器链。

28、s3.4.3,行分割器链和列分割器链交叉形成最终布局的网格。

29、本发明具有如下有益效果:

30、本发明通过利用qml的item父子关系动态重组机制、splitter对象池复用机制及基于最小宽高比约束的智能网格布局算法,实现了停靠窗口状态的轻量级切换、多窗口布局的全自动最优排列以及视图内容的运行时热切换,提升了测试仪器软件的操作效率与界面适应性。

1.基于qml动态切换的多视图停靠窗口系统,其特征在于,包括:

2.根据权利要求1所述的基于qml动态切换的多视图停靠窗口系统,其特征在于,所述停靠控件模块维护一个视图管理器,所述视图管理器为停靠控件模块提供视图类型列表,停靠控件模块通过下拉菜单项从所述视图类型列表中选择视图类型,并将窗口视图切换至选择的视图类型。

3.根据权利要求2所述的基于qml动态切换的多视图停靠窗口系统,其特征在于,所述下拉菜单项包括视图切换子选项与新增窗口子选项,所述视图切换子选项对应所述视图类型列表中的各视图类型,所述新增窗口子选项被触发时提供所述视图类型列表,供用户选择并创建对应视图类型的可停靠窗口。

4.根据权利要求1所述的基于qml动态切换的多视图停靠窗口系统,其特征在于,所述弹性分割器模块基于qml splitview组件实现,弹性分割器模块包括多个弹性分割器实例,弹性分割器实例构成二叉树嵌套分割结构中的非叶节点,所述非叶节点划分相邻可停靠窗口区域的布局空间。

5.根据权利要求1所述的基于qml动态切换的多视图停靠窗口系统,其特征在于,所述停靠空间管理器模块通过二叉树嵌套分割结构组织窗口布局,并通过隐藏的后台管理器项维护一个弹性分割器实例数组作为splitter对象池。

6.根据权利要求5所述的基于qml动态切换的多视图停靠窗口系统,其特征在于,所述splitter对象池管理弹性分割器实例,具体为:

7.基于qml动态切换的多视图停靠窗口方法,利用权利要求1-6中任意一项所述的基于qml动态切换的多视图停靠窗口系统,其特征在于,具体包括如下步骤:

8.根据权利要求7所述的基于qml动态切换的多视图停靠窗口方法,其特征在于,步骤s2具体包括如下步骤:

9.根据权利要求7所述的基于qml动态切换的多视图停靠窗口方法,其特征在于,步骤s3中所述智能网格布局算法具体包括如下步骤:

10.根据权利要求9所述的基于qml动态切换的多视图停靠窗口方法,其特征在于,步骤s3.4中,所述通过弹性分割器实例进行最终布局构建具体包括如下步骤: