Qt ActiveX控件

ActiveX控件类继承自QaxBindable  注意点:

1、 接口函数必须为public slots,且函数返回值不能写HRESULT

2、 函数的参数或返回值都改为int,不能写为long

由于控件是个播放器,下面就一些效果实现及遇到的问题做个描述

1、 播放控制条播放时隐藏,鼠标移动时显现的实现:

实现一个控件覆盖显示在另一个控件上,需要先创建底层的控件,再创建上层的控件,这样通过上层控件的show或hide能实现显示或隐藏的功能。别人说Layout添加控件的顺序也可以影响这个实现,没有论证。

设置一个定时器,当鼠标移动时,控制条显示并启动定时器,当定时器timeout()时隐藏控制条。

当鼠标移动到控制条上时,此时控制条应该不再隐藏。Qt父子窗体消息传递是当子窗体不响应其上产生的消息时,此消息会自动传递给父窗体,但此处控制条控件设置了setAttribute(Qt::WA_NoMousePropagation);即不往上传递鼠标消息,所以在主窗口中添加eventFilter来处理控制条控件的MouseMove消息。

2、 双击全屏的实现:

在类中设置一个变量作为是否全屏的标记,当全屏时,还需记录当前窗体的Rect,再调用

        setWindowFlags(Qt::Dialog);

        showFullScreen();

         实现全屏,退出全屏时,

         setWindowFlags(Qt::SubWindow);

        showNormal();

        setFocus();  //设置键盘焦点,保证退出全屏后能立即响应键盘消息

         再setGeometry(),此时Geometry设为刚才记录的Rect,即还原了窗体。

3、开始里面写了些快捷键是用QshortCut来实现的,但发现在网页上时并不能响应,以为是ActiveX控件快捷键须由钩子来实现,后来试了下keyPressEvent()发现可以在网页中响应(必须在初始化窗体对象时调用setFocusPolicy函数),深层缘由有待挖掘。


今天出现个问题    控件注册不成功  DllRegisterServer失败 返回0xC0000005  发现是路径中带有括号  留记
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值