本次主要借鉴了很多前人的例子加以总结完成,主要参考连接有:QT5-STK二次开发实例
本次使用版本介绍
Qt5
STK11.6(64)
Qt 编译器MSVC 2015
STK是由美国Analytical Graphics公司开发的一款在航天领域处于领先地位的商业分析软件。
QT的一套跨平台的C++图形用户界面库,上手简单,功能强大,是目前GUI开发者广泛使用的C++图形库。这篇文章主要介绍使用QT进行STK二次开发过程中的STK接口的配置实例。STK是由美国Analytical Graphics公司开发的一款航天商业分析软件,本身支持C,C++,Java,Matlab等多种语言的二次开发。下面介绍在QT Creator中利用axWidgets显示STK三维场景简单例子,因为在整个二次开发中STK的类实例只能有一个,所以下面的例子中STK类是一个单例模式。
需要正确安装好STK(我安装的是STK11.6,其他版本应该类似),在C:\Program Files\AGI\STK 11\CodeSamples 目录下面有一个压缩包CodeSamples.zip,在这个压缩包里面有stk调用的例子,c++,java,Csharp,matlab等语言的都有。可以打开对应版本功能,我这里打开的是vs2017的,这里给的例子是MFC的,可以根据这个改写Qt的代码。
我这里运行出来MFC的例子程序如图,注意选择对应的版本和项目。
对于编写Qt而言,我们需要将如下文件添加到自己的Qt 程序中去
这一块可以参考上面的连接,或者MFC的例子程序,这里不做赘述。或者也可以下载我上传的例子。
遇到的问题:我这里是STK11引用,#include "AgStkObjects.tlh"这里会报错,需要在这前面加上
#include "AgStkGraphics.tlh"头文件,如图所示。
- #include "AgStkUtil.tlh"
- using namespace STKUtil;//引用相应命名空间
- #include "AgVGT.tlh"
- #include "AgStkGraphics.tlh"//加上这个就不会报错了
- #include "AgStkObjects.tlh"
- using namespace STKObjects;
- #include "STKX.tlh"
- using namespace STKXLib;
界面设置,需要QAxWidget选择AGI的控件。但是我这里添加控件没有出现AGI这些控件的选项,也不会添加,有会的同学可以评论指导一下。
我这里是通过设置guid的方式弄得,先去注册表找到AGI Globe Control 11对应的guid值修改进ui文件中去。
运行结果如图:
项目地址:Qt+STK11调用例子-C++文档类资源-CSDN下载