❶ 如何使用QT開發Activex控制項
ActiveX技術雖然是一項古老的技術,但是卻有著廣泛的應用,支付寶的密碼輸入控制項,各大銀行的密碼輸入控制項,網頁聊天室中的截屏功能,網頁播放器中的p2p播放...甚至Flash,Silverlight等等,在IE中都表現為ActiveX。雖然C#也能開發"用於網頁的com應用",能達到類似ActiveX的效果,但是有一個要命的問題是必須得安裝幾百M的.net Framework框架,如果僅僅為了安全的輸入一個密碼,而要用戶下載幾百M的安裝程序,這是很多人不能接受的,Delphi做為win32下的原生開發工具,能很好的支持微軟各種"古老"的經典技術。(再做點小廣告:delphi的kyrix版本還能編譯跨平台的應用哦!)
ok,開工吧:
開發工具:推薦用delphi 2010(d7也可以,不過添加屬性,方法等過程要手動,稍微麻煩點)
1.啟用delphi2010-->File->New->Other-->Active Library
2.項目命名為MyActiveX
3.File-->Save All 全部保存
實際上這樣就能編譯了,不過只是空的dll
4.File-->New-->Other-->Active Form
改名為MyForm
將對應的單元文件,保存為UMyForm.pas
5.打開MyAcitveX.ridl文件,切換到design視圖,選中IMyForm介面,右擊New-->Property
添加一個屬性Msg
將Msg屬性的Type改為BSTR 即WideString類型
完了之後,點擊工具欄中的Refresh
Implementation(即上圖中工具欄中圈起來的部分)--這一步很重要,點擊之後,它將自動生成屬性Msg對應的聲明和實現代碼模板
6.打開UMyForm.pas--即ActiveForm對應的單元,找到Set_Msg以及Get_Msg的實現部分,補充代碼如下:
functionTMyForm.Get_Msg:WideString;
begin
result:=_msg;
end;
procereTMyForm.Set_Msg(constValue:WideString);
begin
_msg:=value;
end;
當然TMyForm的private部分,得先加一個私有成員
type
TMyForm=class(TActiveForm,IMyForm)
private
{Privatedeclarations}
_msg:WideString;
...
這樣我們就為即將生成的ActiveX控制項,添加了一個字元串類型的屬性Msg,下面來測試一下:
7.編譯項目,會生成一個MyActiveX.ocx,在運行欄里輸入
regsvr32 C:\Users\jimmy.yang\Desktop\Delphi_activex\MyActiveX\MyActiveX.ocx
注:這里ocx的路徑,請各位根據自己的實際路徑修改
這樣就完成了ocx的注冊。
8.放到html里測試一下:
<OBJECTID='x'name='x'CLASSID='CLSID:52D17094-0687-4A2F-B2DB-30F3189AC659'align=centerhspace=0vspace=0></OBJECT>
<scripttype='text/JavaScript'>
varx=document.getElementById("x");
alert(x.Msg);
</script>
關於CLSID在哪裡查看,打開:MyActiveX_TLB.pas文件,定位到下面這里:
const
//
MyActiveXMajorVersion=1;
MyActiveXMinorVersion=0;
LIBID_MyActiveX:TGUID='{49138437-8265-4B1A-9EAE-D0F615D68464}';
IID_IMyForm:TGUID='{54A20855-29A3-4C92-85DE-A419DA457C7A}';
DIID_IMyFormEvents:TGUID='{60BBC967-E1E6-4E98-BAE5-776BFD06E9CC}';
CLASS_MyForm:TGUID='{52D17094-0687-4A2F-B2DB-30F3189AC659}';
其中 CLASS_MyForm: TGUID對應的就是ClassID
運行後,除了彈出一個空白的警告框,暫時看不到其它:)(可不就是這樣么?Msg屬性沒給任何初始值,當然是空字元串,所以彈出一個空的警告框是正常的)
9.我們再來添加一些控制項和方法,以驗證剛才設置的屬性確實有效
在MyForm上添加一個文件框,一個按鈕按鈕的事件如下:
procereTMyForm.Button1Click(Sender:TObject);
begin
_msg:=self.Edit1.Text;
end;
即把文本框的值賦給屬性Msg
再繼續定位到Set_Msg,略做修改
procereTMyForm.Set_Msg(constValue:WideString);
begin
_msg:=value;
self.Edit1.Text:=_msg;
end;
即設置Msg屬性時,同時也把值顯示在文本框里,以便等會兒我們好測試在js中給activeX屬性賦值的效果
ok了,再來測試一下,編譯一下,如果通不過,請先運行
regsvr32 C:\Users\jimmy.yang\Desktop\Delphi_activex\MyActiveX\MyActiveX.ocx /u
將剛才注冊的ocx反注冊,同時關掉瀏覽器,不然該ocx文件一直被佔用,無法更新.
修改一下html的代碼:
<OBJECTID='x'name='x'CLASSID='CLSID:52D17094-0687-4A2F-B2DB-30F3189AC659'align=centerhspace=0vspace=0></OBJECT>
<hr/>
<inputtype='button'value='顯示Msg屬性的值'onclick='ShowMsg()'/>
<inputtype='button'value='設置Msg屬性的值'onclick='SetMsg()'/>
<scripttype='text/JavaScript'>
varx=document.getElementById("x");
varShowMsg=function(){
alert(x.Msg);
}
varSetMsg=function(){
x.Msg='js傳過來的值';
}
</script>
❷ QT怎麼重寫控制項
如果只是定義自己的控制項的話,繼承Qt的相關類就行。Qt的Assistant的How to Create Qt Plugins主題有說明兩類創建插件的API,你可以看看。基本上講Qt的基礎書籍都會講插件的開發,比如我的入門書Qt Creator快速入門。
❸ qt裡面用什麼控制項可以分割 然後每一塊可以用來播放視頻
這樣子啊。兩個方案
方案1.
QTableWidget,然後往QTableWidget的cell里放一個widget。
方案2.
QGridLayout,每個Layout里放一個QFrame什麼的之類的
❹ 按照教程,把自己的QT寫的程序做成了自定義控制項,並且實現了在QT Creator中可以直接使用
寫成動態庫或靜態庫
❺ Qt原生控制項在樣式表中有輔助控制器(子控制項選擇器),自己的控制項怎麼加入這種方法呢
建議找個Qt源碼翻翻看對應的控制項,看看有沒有思路。一般這種較為冷門的問題,只能依託自己的頭皮夠硬了。
覺得應該不會太復雜。不過你的問題挺有價值,也很有意思。加油!
❻ Qt編程,自定義控制項添加成功後,如何刪除
如果是用純手寫代碼來添加的,那麼恐怕需要你自己從源代碼找出所有使用過這個控制項的地方逐個刪掉。
如果你是用qt designer或者qt creator的設計模式添加的控制項,直接把它「拉走」就可以了。
❼ QT程序運行中實現QTDesigner對控制項的操作,顯示控制項邊緣的六個點對其進行拖動有沒有什麼方法或例子供參考
你去下個Desgner了源碼自己研究最好,要做的話,可以通過qt的graphic-view實現
❽ QT中怎麼實現兩個控制項信號與槽的雙向接受與發射
這個很簡單啊 相互連接信號和槽 不就行了 直接用QLIneEdit類就行
❾ QT自定義控制項整合
復制到:qtsdk-2010.05/bin/designer
進入Designer標簽,tools -> Form Editor -> About QT Designer Plugin里是搜索到的控制項,錯誤的控制項有提示,比如Debug和Release選的不對。
--------------------------------------
你是在Windows里用QT
官方說:
The version of QT Creator shipped with the QT SDK Open Source version for windows is build using Visual Studio, whereas the SDK is build with and supports g++ (MinGW). This doesn』t cause too many problems, but it totally defeats building and installing QT Designer plugins into QT Creator. The error message is:
Expected build key 「Windows msvc release full-config」 got 「Windows mingw release full-config」
It can be solved three different ways:
1) Build QT Creator from source with MinGW
2) Build the plugin with Visual Studio
3) Build QT Creator with build key checking turned off.