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类型,用于控制此图像对象是否显示。

property

在每个图像对象中添加一个SimpleGroup,Group里面在添加一个RectWidthHeight用于显示边框,WideText用于显示文字。

content

  • 1是界面显示内容
  • 2是界面显示隐藏设置,图像对象的属性设置给SimpleGroup
  • 3是界面实际效果

就这样设置四个,尺寸和字体大小随意设置。

project

至少每个不同界面能看出差别。

外部数据接口(修改自DrawingIntegrationExample)

创建一个MultiWindowData.vtyp文件,在里面添加

1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE type_decl PUBLIC "-//PresagisCanada//DTD VapsXT 19.0" "file:///C:/VAPSXTDTD/VapsXT_19.dtd">

<type_decl name="MultiWindowData" cpp_class="vxtTypMultiWindowData" c_struct="vxtCTypMultiWindowData" build_output_location="VAPSXT_Install">
<struct_type>
<sfield name="Mode" type="Int"/>
</struct_type>
</type_decl>

交互接口只有一个数据,Mode,取整型,实际取值为1/2/3/4,分别对应小中大扩四个界面。

然后将其添加到根工程里面。

vtyp

创建一个新Data I/O Buffer

buffer

I/O Buffer名为MultiWindowBuffer(这个名称很重要,后面要用),Type为MultiWindowData(就是之前的vtyp文件名)。

点击确定后会自动生成两个文件,我们只保留其中的一个。

buffer

DLL部分

在根目录下生成一个Format用于显示、生成可执行文件、生成DLL。

将上面添加的rcvMultiWindowBuffer添加到Format里面,同时按照VAPS XT入门教程41:VAPS XT多界面鼠标操作框架将四个界面添加到Format下的SimpleGroup里面,并将四个界面都设置为隐藏(显示由外部接口控制)。

format

  • 1为format内容
  • 2将接口和本界面需要显示的内容绑定,值为几就显示那个窗口
  • 3为默认显示界面,毕竟所有东西都隐藏了

Qt调用接口

以下内容是在myopengl类中修改。

先按VAPS XT入门教程15.05:DrawingIntegration机制配置Qt工程。

添加一些接口

这里的MultiWindowBuffer就是Data I/O Buffer的名称(删除rcv之后)。

在类中添加一个对象:

在加载DLL时进行值绑定

刷新OpenGL界面时更新接口值

同时提供一个接口用于修改m_mode值。

切换模式后必须调整一下软件窗口尺寸才能更新,所以在接口中直接调用修改尺寸的函数。

在界面中添加四个按钮用于调用这个接口切换四个子界面。

ui

结果

生成DLL、加载DLL、动态控制界面视频效果-B站

在移植到VxWorks653过程中,获得一种新方法实现Qt显示VAPS XT设计的内容。

完整工程地址:VAPS_XT

下一篇:VAPS XT入门教程15.05.03:SXEarth加载VAPS XT仪表

技术交流群,欢迎加入讨论。这个圈子很小,大佬可能没兴趣加这些群聊社区之类的。所以只能带你入门,当然,欢迎大佬指导

qq 672991841


VAPS XT入门教程15.05.02:Qt动态控制VAPS XT多窗口DLL
https://blog.jackeylea.com/vapsxt/qt-dynamic-control-vapsxt-dll/
作者
JackeyLea
发布于
2021年6月1日
许可协议