ITKeyword,专注技术干货聚合推荐

注册 | 登录

QT---字幕滚动效果,检测鼠标进入和离开控制字幕滚动

FreeApe 分享于 2015-05-21

推荐:加入收藏,滚动字幕,跑马灯信息栏,图像滚动,禁看源码,时 间,波浪文字..代码

  加入收藏夹 在 <body> 与 </body> 之间加入: <SCRIPT LANGUAGE=JavaScript> function bookmarkit(){ window.external.addFavorite('http://material.myrice.c

2020腾讯云8月秒杀活动,优惠非常大!(领取2860元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1040

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

1. 鼠标的进入和离开的检测

【方法一】重写构件的enterEvent()、leaveEvent()方法。注意,focusInEvent()和focusOutEvent()这两个函数是判别该控件是否聚焦的,只要在控件在操作上(包括程序操作)有改变,都会促发这两个函数。
如重写label构件方法,
.h文件
classLabel:publicQLabel
{
    Q_OBJECT
    public:
    explicitLabel(QWidget*parent=0);
    protected:
    voidenterEvent(QEvent*event);
    voidleaveEvent(QEvent*event);
};
.cpp文件
voidLabel::enterEvent(QEvent*event)
{
    qDebug()<<"enter";
}
voidLabel::leaveEvent(QEvent*event)
{
    qDebug()<<"leave";
}

然后用重写的类去创建实例。
【方法二】用事件过滤器,eventFilter()。
Qt的事件模型中提供的事件过滤功能使得一个QObject对象可以监视另一个QObject对象中的事件,通过在一个QObject对象中安装事件过滤器可以在事件到达该对象前捕获事件,从而起到监视该对象事件的效果。事件过滤器可以实现在窗体中监视全部控件的不同事件,方便实现功能扩展。若一个窗体中包含多个控件的话,再用重写的方式就有点麻烦了,所以就用事件过滤器来实现。

 .h文件
publicslots:
booleventFilter(QObject*,QEvent*);
 .cpp文件
boolMainWindow::eventFilter(QObject*watched,QEvent*even)
{
if(watched==ui->m_scrollCaptionLabel)//判断控件
{
    if(event->type()==QEvent::Enter)//然后再判断控件的具体事件
    {
        qDebug()<<"filterenter";
        returntrue;
    }
    if(event->type()==QEvent::Leave)//然后再判断控件的具体事件
    {
        qDebug()<<"filterleave";
        returntrue;
    }
}
    qDebug()<<"...";
    returnQWidget::eventFilter(watched,event);//调用基类函数,把事件传递下去
}

2. 滚动字幕实现

滚动字幕(跑马灯效果):利用定时器,在固定的时间间隔(这里为500毫秒)截取文本,来实现滚动效果。
scrollStr=QStringLiteral("滚动字幕(跑马灯效果):利用定时器,在固定的时间间隔(这里为500毫秒)截取文本,来实现滚动效果");
timer=newQTimer(this);
connect(timer,SIGNAL(timeout()),this,SLOT(scrollSlot()));
timer->start(500);
------------------------------------------------------
voidMainWindow::scrollSlot()
{
    staticintnPos=0;
    if(nPos>scrollStr.length())
    {
        nPos=0;
    }
    ui->scrollLabel->setText(scrollStr.mid(nPos));
    nPos++;
}

FreeApe

鼠标的进入和离开的检测 滚动字幕实现 1. 鼠标的进入和离开的检测 【方法一】重写构件的enterEvent()、leaveEvent()方法。注意,focusInEvent()和focusOutEvent()这两个函数是判别该控件是否聚

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。