User Tools

Site Tools


reference:guisys

XT GUI 定制系统

XT拥有一套完整的GUI定制系统XCGS1),它基于字符串定义控件类型、属性、消息事件以及右键菜单,使用XML结构化文本命名控件并组织界面布局,支持运行时动态创建控件、设定属性,自动关联控件事件的消息处理,交互时通过字符串索引控件,结构化配置文件独立于C++源代码,层次清晰且易读易编辑,可复用和多层嵌套使用,将界面开发与业务功能开发解耦,使得界面开发模块化,修改界面布局不需要修改C++代码,也不需要重新编译,基于这套系统,除开发工程师以外,技术工程师不需要任何开发技能也完全胜任界面定制的工作,有利于团队分工协作。ICommand基于它提供的大量接口,可高效实现功能开发,支持敏捷开发快速迭代。

用户将GUI的配置写出xml文件中,GUI定制系统读入xml配置文件就可以生成对应的对话框。XCGS能显著减少界面开发的工作量和难度,提高开发效率。

使用XCGS定制界面通过编写相应的XML配置文件完成(为了避免乱码,以utf8编码为佳), XML文件的根节点标签为dialog,dialog块有如下属性:

  • version,配置文件版本号,必须设置,当前的版本号为2,版本号为1的配置文件已不再支持;
  • width,对话框宽度,取值为整型,设定该值将强制对话框的宽度为指定值,默认不指定,XCGS将根据实际情况计算对话框宽度值;
  • height,对话框高度,取值为整型,设定该值将强制对话框的高度为指定值,默认不指定,XCGS将根据实际情况计算对话框高度值;

根节点下包含唯一的子节点,其标签为layout,layout节点下包含对话框的顶层布局(见【布局参考】),对话框的配置从顶层布局开始,按照控件的位置关系组合水平布局、垂直布局、表单布局或栅格布局,在各布局中添加控件或子布局,水平布局、垂直布局可以任意嵌套其他布局,但是表单布局和栅格布局不能嵌套其他布局。每一个控件拥有一个唯一的标识符名字,布局的标识符名字可选,但是不得与其他的名字发生重复冲突(如果有冲突,XCGS会报错)。

XCGS还为对话框提供了帮助系统的支持,它通过关键字help_url来设置对话框的帮助链接(如help_url=“www.baidu.com”),用户点击对话框标题栏的问号按钮即启动浏览器并跳转到该页面。

动态事件设定

XCGS中可定义动态事件,它参照Qt的信号槽机制,使用关键字“connect”定义动态消息事件的映射关系,connect的值类型为分段字符串。信号槽映射定义基于Qt信号槽机制的动态事件绑定,格式为“<signal>,<target>:<slot>”,其中<signal>为该控件发出的信号,<target>为信号的发送目标控件,<slot>为目标控件处理信号的槽,信号和槽的定义可以参考Qt文档和各控件的文档,可以建立多个信号槽的绑定,它们通过“;”分隔,如“<signal1>,<target1>:<slot1>;<signal2>,<target2>:<slot2>“。<target>可为空,这时表示目标控件是对话框,槽也可以为空,表示仅仅发出信号,该信号会被转发到命令的接口onControlEvent处理,用于定制特殊的交互处理。

右键菜单设定

对于列表、表格、树等容器控件,经常需要右键菜单以支持复杂的交互操作,XCGS为此引入了ContextMenu块设定,如果某个控件需要定义右键菜单,则将ContextMenu块设定嵌入到该控件的定义中,每一个右键菜单项通过标签action定义,其支持的属性包括图标icon,显示文本text,以及菜单标识名name。

  • name

菜单标识名,其值类型为字符串,控件名只能以字母开头,可包含数字、下划线、点符号。参考示例:name=“value.act”。

  • icon

指定菜单项的图标路径,该路径为相对路径,其参考路径为项目资源目录。特别的,如果要参考全局资源目录下的文件,该路径应以“~“开头,”~“表示全局资源目录。参考示例:icon=“icons/display_deform.png”

  • text

用于设置菜单项的显示字符串,其值类型为字符串。参考示例:text=“hello”。
对右键菜单的响应需要在命令的onControlEvent中响应,其开发过程可以参考给控件添加右键菜单

<List>
	...
	<ContextMenu>
		<action icon="::42" text="脚本载入" name="menu_Load.act"/>
		<action icon="::43" text="脚本另存" name="menu_Save.act"/>
		<action icon="::66" text="运行全部" name="menu_RunAll.act"/>
		<action icon="::64" text="运行选中" name="menu_RunSelect.act"/>
	</ContextMenu>
</List>

布局参考

控件参考

应用场景

测试

  • 按照上述规则配置好xml文件,并保存;
  • 在Pre界面测试菜单下单击“Test Xml”,选择保存好的xml文件,点击“Launch”按钮即可查看配置出来的UI效果;
1)
XT Customized GUI System
reference/guisys.txt · Last modified: 2024/02/29 14:19 (external edit)