❶ 如何使用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.