VAPS XT入门教程15.05.02:Qt动态控制VAPS XT多窗口DLL
系列索引:VAPS XT入门教程索引
上一篇:VAPS XT入门教程15.05.01:Qt动态加载VAPS XT so
在VAPS XT入门教程41:VAPS XT多界面鼠标操作框架中介绍了基于鼠标操作的多窗口拖拽显示,其中多窗口显示是通过多个窗口一次显示一个实现的。
在VAPS XT入门教程15.5:DrawingIntegration机制中介绍了使用Qt的QOpenGL加载VAPS XT生成的DLL。
本文实现通过Qt和DrawingIntergration框架向DLL传递参数已实现动态控制DLL,对于本文的实例就是通过Qt控制DLL显示不同的窗口。
基本界面
先创建一个VAPS XT根工程,然后添加一个子文件夹为Modules用于存放四个子界面窗口。
在Modules四个子文件夹中添加四个图像对象(Graphical Object)分别命名为SmallModule/StdModule/MaxModule/ExtendModule。
每个图像对象都有一个属性IsVisible,bool类型,用于控制此图像对象是否显示。
在每个图像对象中添加一个SimpleGroup,Group里面在添加一个RectWidthHeight用于显示边框,WideText用于显示文字。
- 1是界面显示内容
- 2是界面显示隐藏设置,图像对象的属性设置给SimpleGroup
- 3是界面实际效果
就这样设置四个,尺寸和字体大小随意设置。
至少每个不同界面能看出差别。
外部数据接口(修改自DrawingIntegrationExample)
创建一个MultiWindowData.vtyp文件,在里面添加
1 |
|
交互接口只有一个数据,Mode,取整型,实际取值为1/2/3/4,分别对应小中大扩四个界面。
然后将其添加到根工程里面。
创建一个新Data I/O Buffer
I/O Buffer名为MultiWindowBuffer(这个名称很重要,后面要用),Type为MultiWindowData(就是之前的vtyp文件名)。
点击确定后会自动生成两个文件,我们只保留其中的一个。
DLL部分
在根目录下生成一个Format用于显示、生成可执行文件、生成DLL。
将上面添加的rcvMultiWindowBuffer添加到Format里面,同时按照VAPS XT入门教程41:VAPS XT多界面鼠标操作框架将四个界面添加到Format下的SimpleGroup里面,并将四个界面都设置为隐藏(显示由外部接口控制)。
- 1为format内容
- 2将接口和本界面需要显示的内容绑定,值为几就显示那个窗口
- 3为默认显示界面,毕竟所有东西都隐藏了
Qt调用接口
以下内容是在myopengl类中修改。
先按VAPS XT入门教程15.05:DrawingIntegration机制配置Qt工程。
添加一些接口
这里的MultiWindowBuffer就是Data I/O Buffer的名称(删除rcv之后)。
在类中添加一个对象:
在加载DLL时进行值绑定
刷新OpenGL界面时更新接口值
同时提供一个接口用于修改m_mode值。
切换模式后必须调整一下软件窗口尺寸才能更新,所以在接口中直接调用修改尺寸的函数。
在界面中添加四个按钮用于调用这个接口切换四个子界面。
结果
在移植到VxWorks653过程中,获得一种新方法实现Qt显示VAPS XT设计的内容。
完整工程地址:VAPS_XT
下一篇:VAPS XT入门教程15.05.03:SXEarth加载VAPS XT仪表
技术交流群,欢迎加入讨论。这个圈子很小,大佬可能没兴趣加这些群聊社区之类的。所以只能带你入门,当然,欢迎大佬指导