OSG嵌入IE浏览器:使用QtActiveX控件
2015-07-28 21:54
495 查看
一直在qt上进行OSG相关的开发,于是也把OSG嵌入IE浏览器的方式实验了下。
首先,还是OSG先嵌入Qt,此处仍然使用的QGraphicsView体系,详情参见OSGEarth嵌入Qt的QGraphicsView框架一和二,此处不在赘述。
其次,新建Qt的ActiveX项目,如图:
项目创建成功后,会自动创建一类多继承自
由于我们只是实验,所以没有其他别的方法。
实现文件如下:
我是使用的直接打开本地文件查找模型的方式,只有osg格式的,其他的自行添加。
注意:
- “{40657603-1960-4764-AC97-6AD788CDDDD8}”是我们的控件ID,就是我们在 HTML中需要知道的ID;
- “{07F2F6DE-D3A1-4E74-95C0-23C98C43A450}”是Interface的ID;
- “{4A1AC37A-E375-4450-ADEC-82A6900FD6FB}”是Event的ID;
- “{7CF7BB56-1470-4172-B805-78FE3323BC4F}”是TypeLib的ID;
- “{CCAEC7E3-D3ED-4C48-BC40-523DC7A30109}”是APP的ID。
最后,让我们来写一个网页来测试下效果:
运行效果如下:
PS:这里面还有不少的瑕疵,比如:IE浏览器的安全提示,比如选择文件的不方便等等需要进一步研究了。
首先,还是OSG先嵌入Qt,此处仍然使用的QGraphicsView体系,详情参见OSGEarth嵌入Qt的QGraphicsView框架一和二,此处不在赘述。
其次,新建Qt的ActiveX项目,如图:
项目创建成功后,会自动创建一类多继承自
public QWdiget, public QAxBindable,其中我们需要把QWidget修改为继承自我们实现的嵌入OSG的Graphics类,代码如下:
class BroswerModels : public GraphicsView, public QAxBindable { Q_OBJECT public: BroswerModels(QWidget *parent = 0); private: };
由于我们只是实验,所以没有其他别的方法。
实现文件如下:
BroswerModels::BroswerModels(QWidget *parent) : GraphicsView(parent) { QString strFile = QFileDialog::getOpenFileName(this, QStringLiteral("模型"), "", "Models (*.osg)"); if (!strFile.isEmpty()) { osg::ref_ptr<osg::Node> pNode = osgDB::readNodeFile(strFile.toStdString()); this->getRoot()->addChild(pNode); } } QAXFACTORY_DEFAULT(BroswerModels, "{40657603-1960-4764-AC97-6AD788CDDDD8}", "{07F2F6DE-D3A1-4E74-95C0-23C98C43A450}", "{4A1AC37A-E375-4450-ADEC-82A6900FD6FB}", "{7CF7BB56-1470-4172-B805-78FE3323BC4F}", "{CCAEC7E3-D3ED-4C48-BC40-523DC7A30109}")
我是使用的直接打开本地文件查找模型的方式,只有osg格式的,其他的自行添加。
注意:
- “{40657603-1960-4764-AC97-6AD788CDDDD8}”是我们的控件ID,就是我们在 HTML中需要知道的ID;
- “{07F2F6DE-D3A1-4E74-95C0-23C98C43A450}”是Interface的ID;
- “{4A1AC37A-E375-4450-ADEC-82A6900FD6FB}”是Event的ID;
- “{7CF7BB56-1470-4172-B805-78FE3323BC4F}”是TypeLib的ID;
- “{CCAEC7E3-D3ED-4C48-BC40-523DC7A30109}”是APP的ID。
最后,让我们来写一个网页来测试下效果:
<HTML> <HEAD> <TITLE>Model Broswer</TITLE> <style> body{ padding:0px; margin:0px; overflow:hidden; } </style> </HEAD> <OBJECT ID="ModelBroswerControl" width="100%" height="100%" classid="CLSID:40657603-1960-4764-AC97-6AD788CDDDD8"> <PARAM NAME="_Version" VALUE="65536"> <PARAM NAME="_ExtentX" VALUE="12806"> <PARAM NAME="_ExtentY" VALUE="1747"> <PARAM NAME="_StockProps" VALUE="0"> </OBJECT> </HTML>
运行效果如下:
PS:这里面还有不少的瑕疵,比如:IE浏览器的安全提示,比如选择文件的不方便等等需要进一步研究了。
相关文章推荐
- Qt窗口中的一些小技术总结
- QT1.1-与Opencv的hello world
- Installing PyQt5 part2
- 关于qt的问题构造函数的问题
- Qt4静态编译软件,vs属性设置
- Qt之界面美化输入框
- Qt开发小工具之gif转换器
- Qt实现16进制unicode转utf-8以及国际音标编码问题
- Qt发布Release版本注意事项
- Qt Creator管理多个项目
- Qt4.8.6插件化编程例程--仅供参考
- Qt使用的一些总结
- Qt4过渡至Qt5
- qt实现sqlite3的级联删除
- VS2010静态编译安装Qt5.1.1+openssl
- 解决Qt4静态编译中文乱码
- QT:QDialog的设置简述
- vs2010静态编译编译qt4
- ROS学习--(八)使用rqt控制台和roslaunch
- QT5可执行程序缺少dll问题