Qt 的tool tip

今天要给我做的qt控件加个tooltip,嗯,应该不难的。不过,还是先把tooltip的
来龙去脉弄清楚先的。
tool tip的定时器:
QApplication中有一个叫作toolTipWakeUp的定时器,当鼠标移动到某个QWidget时
它便会被触发。当鼠标离此QWidget时,它便会被停止。相关代码在QApplication::notify
函数中:
// 处理QEvent::MouseMove消息的代码段中,是定时器的启动
if (e->type() == QEvent::MouseMove && mouse->buttons() == 0)
 {
d->toolTipWidget = w;
d->toolTipPos = relpos;
d->toolTipGlobalPos = mouse->globalPos();
d->toolTipWakeUp.start(d->toolTipFallAsleep.isActive()?20:700, this);
 }
// 定时器的关闭
// User input and window activation makes tooltips sleep
    switch (e->type()) {
    case QEvent::Wheel:
    case QEvent::ActivationChange:
    case QEvent::KeyPress:
    case QEvent::KeyRelease:
    case QEvent::FocusOut:
    case QEvent::FocusIn:
    case QEvent::MouseButtonPress:
    case QEvent::MouseButtonRelease:
    case QEvent::MouseButtonDblClick:
        d->toolTipFallAsleep.stop();
        // fall-through
    case QEvent::Leave:
        d->toolTipWakeUp.stop();
    default:
        break;
    }


tool tip的事件触发
tool tip事件是由上面提到的定时器触发的。并在QApplication::Event
函数中通过响应对应的定时器来发送到指定的窗口中。


tool tip的显示
好吧,tool tip的事件已经知道是怎么发送到指定的QWidget了,现在就
看看QWiget是怎么处理ToolTip事件的,QWidget::Event()的相关代码段如下:
 case QEvent::ToolTip:
        if (!d->toolTip.isEmpty())
            QToolTip::showText(static_cast<QHelpEvent*>(event)->globalPos(),
d->toolTip, this);
        else
            event->ignore();
        break;


至于QToolTip自身又是怎么显示的,就不详细记述了。其实,就是显示一个QLabel
打完收工~
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值