QT開發ActiveX控件
-
- 一:所用IDE版本
- 二:建立ActiveX
- 三:qt desinger
- 四:regsvr32.exe注冊DLL
- 五:html
- 六:windeployqt擷取dll多需的所有檔案
- 七 HTML 調用ActiveX方法
一:所用IDE版本
IE11
vs2013+qt visual studio tools version 2.7.2
二:建立ActiveX
然後一直next,最後finish
三:qt desinger
放3個元件,這三個元件可以像普通的QT一樣進行操作,然後編譯成dll。
四:regsvr32.exe注冊DLL
- 管理者權限打開CMD
- 如果是64位的dll,使用C:\Windows\SysWOW64的regsvr32.exe,如果是32位的dll,使用c:\windows\system32的regsvr32.exe
- 執行
regsvr32.exe ActiveQtServer_test1.dll
- 之後再需要生成dll就需要管理者權限打開vs
五:html
建立html,命名為ac.html
<HTML>
<HEAD>
<TITLE>My Web</TITLE>
</HEAD>
<BODY>
<object ID="ActiveQtServer_test1" classid="CLSID:552ec57c-2d6a-4e8c-b08b-69044335d576" width="600" height="400">
</object>
</BODY>
</HTML>
TITLE:随意
ID:随意
classid:552ec57c-2d6a-4e8c-b08b-69044335d576
width/height:随意
NOTE: HTML放到dll同級目錄下
六:windeployqt擷取dll多需的所有檔案
使用QT自帶的windeployqt.exe擷取dll多需的所有檔案
IE打開ac.HTML檔案,效果如下:
七 HTML 調用ActiveX方法
- Qt類中的屬性和公有的插槽函數(slots)會被轉換為COM中的屬性和方法
- Qt類中的信号(signals)會被轉換成為COM元件中的事件
是以添加一個槽函數printffff,這個函數可以被HTML調用
public slots:
QString printffff(QString s)
{
ss = s;
ui.lineEdit->setText(ss);
return ss;
}
};
HTML:如下
<HTML>
<HEAD>
<TITLE>My Web</TITLE>
</HEAD>
<BODY>
<object ID="ActiveQtServer_test1" classid="CLSID:552ec57c-2d6a-4e8c-b08b-69044335d576" width="600" height="400">
</object>
<p>
<button name="string" onclick="pushhhh()">push</button>
</p>
<script>
function pushhhh(){
ActiveQtServer_test1.printffff("123123");
}
</script>
</BODY>
</HTML>
IE打開HTML效果如下: