版权声明
本文为原创作品,请尊重作者的劳动成果。转载必须保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正。
在Qt中使用ActiveX控件
Qt的windows商业版本提供了ActiveQt这个framework,使用这个组件我们可以在Qt中使用ActiveX控件,并且也开发基于Qt的ActiveX控件。ActiveQt包含了两个组件QAxContainer和QAxServer。
l QAxContainer允许我们使用COM对象,并且可以将将ActiveX控件嵌入到Qt程序中去。
l QAxServer可以将我们写的Qt控件导出为COM对象或者是ActiveX控件。
第一个例子我们来演示一下在Qt中使用shockwaveFlash这个ActiveX控件。
#include <QApplication>
#include <QtGui>
#include <QAxWidget>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QAxWidget *flash = new QAxWidget(0,0);
flash->resize(500,80);
flash->setControl(QString::fromUtf8("{d27cdb6e-ae6d-11cf-96b8-444553540000}"));
flash->dynamicCall("LoadMovie(long,string)",0,"c:/1.swf");
flash->show();
return a.exec();
}
QAxContainer不包含在QtCore里面,所以要使用QAxContainer的话还必须要在.pro文件中添加 CONFIG+=qaxcontainer
下面就来解释一下上面的代码:
1. 首先我们创建了一个QAxWidget对象。QAxWidget对象是用来封装ShockwaveFlash这个ActiveX控件。QAxContainer是有三个类组成的。分别是:QAxObject封装了COM对象、QAxWidget封装了ActiveX控件、QAxBase是QAxObject和QAxWidget的父类,它实现了封装COM的核心函数。
这三个类的关系如下:
2. 然后通过setControl设置ShockwaveFlash这个ActiveX控件的class_id,class ID可以通过一些其它的编程工具获得(vc/Delphi/Microsoft ActiveX Control Pad)。这时就会调用CoCreateInstance创建ActiveX控件的实例。这时这个ActiveX控件的所有的属性、方法、事件将通过QAxWidget转换为Qt的properties、signals和slots。
通过调用QAxWidget的property()方法和SetProperty方法可以获取和设置ActiveX控件的属性。
既然可以调用ActiveX控件的方法属性,当然也就需要有COM中的数据类型和Qt中的使用的数据类型的转换了。下面就是COM中数据类型和Qt中的数据类型对应的表格:
3. 通过dynamicCall方法来调用ActiveX控件的方法。
1)dynamicCall()最多传递八个QVariant类型的参数,并且返回类型也是QVariant。
2)如果我们需要传递IDispatch *或者是IUnknown *,我们可以将这些组件封装成QAxObject,然后通过调用asVariant()方法来将这个COM对象转换为QVariant。同样如果我们返回一个IDispatch*或者IUnknown*的对象,就需要通过querySubObject方法将这个对象转换为QAxObject。
QAxObject *session = outlook.querySubObject("Session");
3)如果不想这样做还可以QAxWidget还为我们提供了QueryInterface方法
IWebBrowser2 *webBrowser = 0;
activeX->queryInterface(IID_IWebBrowser2, (void *)&webBrowser);
if (webBrowser) {
webBrowser->Navigate2(pvarURL);
webBrowser->Release();
}
4)dynamicCall方法还可以设置COM控件的属性:
activeX->dynamicCall("Value", 5);
QString text = activeX->dynamicCall("Text").toString();
5)通过dynamicCall调用COM对象的方法的时候需要提供完成的函数签名。
activeX->dynamicCall("Navigate(const QString&)", "qt.nokia.com");
分享到:
相关推荐
在本项目中,"qt使用activex控件开发的视频播放器项目源码",开发者利用QT框架结合ActiveX技术创建了一个能够播放多种视频格式(如MP4和MPEG)的播放器。ActiveX是一种微软开发的技术,允许在不同应用程序之间共享...
在Qt中,通过使用Qt的ActiveX模块,我们可以把Qt的QWidgets或QML部件封装成ActiveX控件,使得这些控件可以在支持ActiveX的环境中,如Internet Explorer浏览器、Visual Basic、Visual C++等应用中使用。 首先,要...
2. **Excel应用的ActiveX接口**:这部分文档详细介绍了如何在Qt中使用ActiveX控件与Excel交互。例如,`ExcelApplication_ActiveX_Help.html`可能包含了如何创建Excel实例、打开工作簿、操作工作表和单元格的方法。`...
Qt的windows商业版本提供了ActiveQt这个framework,使用这个组件我们可以在Qt中使用ActiveX控件。 这个代码提供了基本的Excel操作范例:打开 关闭 读写 另外,还实现了如何在Excel中插入散点图图表并添加趋势线,...
1. **Qt与ActiveX集成**:Qt提供了对ActiveX的支持,允许开发者在Qt应用中使用ActiveX控件,同时也可创建Qt应用程序作为ActiveX服务器,使得非Qt环境的应用可以调用其功能。 2. **QAxFactory**:这是Qt用于创建...
在本文中,我们将深入探讨如何使用Qt框架进行ActiveX控件的开发,特别是针对指纹采集器的集成。Qt是一个跨平台的应用程序开发框架,广泛应用于桌面、移动和嵌入式设备。而ActiveX控件是一种在Windows环境中创建可...
Qt框架下的ActiveX控件的开发的资料较少,该示例程序展示了Qt中OpenGL环境下开发ActiveX控件。开发环境是VS2008+Qt4.6.2+OpenGL,需要配置环境,点开程序可以编译运行;生成的控件名称是GLBox。欢迎大家交流,谢谢~
本篇将详细介绍如何在ActiveX控件中显示对话框界面,以提供用户交互的功能。 首先,了解ActiveX控件的基本概念。ActiveX是微软提出的一种组件对象模型(COM),它通过接口和类库来定义可执行代码。这些组件可以是...
从VC的示例代码中编译的ActiveX控件测试容器,可以很方便的测试开发中的ActiveX控件。 以前这个工具是作为VC的一个实用工具一起发布的,现在VC提供了代码,直接编译就行了。
这篇博客文章(http://blog.csdn.net/csxiaoshui/article/details/48000885)中提供的“Qt ActiveX测试代码”是一个实例,展示了如何在Qt应用程序中使用ActiveX控件。虽然代码可能较为随意,但它是理解Qt与ActiveX...
2. **外部传入数值**:在QT封装的ActiveX控件中,可以通过信号和槽机制从QT应用向ActiveX控件传递数据。例如,可以通过定义一个信号,当信号被触发时,传入需要的数值,然后在ActiveX控件内部的槽函数中处理这些数值...
在Visual Studio 2010中,我们可以创建和管理这些控件,而Qt 4.8.0则提供了与ActiveX技术集成的能力,使得开发者能够在Qt应用程序中利用ActiveX控件的特性。 首先,我们要了解在Qt中创建ActiveX控件的基本步骤。这...
最近弄了一个在Qt中使用C#控件的功能,使用的方法是通过C#生产ActiveX控件,在Qt中使用该ActiveX控件。本文这里简单的介绍一下如何用C#生成ActiveX控件。 1. 建立WinForm的UserControl工程,在控件的属性页中选择”...
Qt框架下的ActiveX的开发的资料较少,该示例程序展示了Qt中OpenGL环境下开发ActiveX控件。开发环境是VS2008+Qt4.6.2+OpenGL,需要配置环境,点开程序可以编译运行;生成的空间名称是GLBox。欢迎大家交流,谢谢~
4. **实现业务逻辑**:在Qt类中实现ActiveX控件的具体功能。这可能涉及到与exe程序的交互,例如通过进程通信或者直接调用exe的入口点。 5. **注册控件**:完成编码后,需要在Windows上注册ActiveX控件,使其能在IE...
ActiveX控件是一种用于Windows平台上的软件组件,可以在多种应用程序之间共享功能,尤其是在Web浏览器中的应用非常广泛。通过Qt ActiveX,开发者可以利用Qt库的强大功能来开发跨平台的ActiveX控件。 #### 二、创建...
C++实现的中国象棋控件,包括中国象棋 MFC 扩展库,中国象棋 activex 控件 ,中国象棋Qt插件,人工智能引擎等 功能 控件 中国象棋库 中国象棋基本规则 棋局保存和复盘 中国象棋 MFC 扩展动态库 中国象棋 ...
在这个场景下,"VS C#调用QT Active控件demo"提供了一个实例,展示了如何在Visual Studio(VS)的C#环境中调用并集成Qt的ActiveX控件。这个教程或者项目演示了C#与Qt之间的交互,使得开发者可以利用Qt丰富的图形界面...
总结来说,通过C++调用微软的ActiveX控件实现远程桌面功能,需要掌握COM和ActiveX的基本概念,以及如何在C++环境中使用ATL库进行组件交互。"TestMfcAtlDebug"项目提供了具体的实现细节,可以通过阅读代码和博客文章...