zoukankan      html  css  js  c++  java
  • Qt Tooltip详解

    https://blog.csdn.net/niu_gao/article/details/8204425

    Qt4中的tooltip与win32中的tooltip有很多不一样的地方,下面来总结一下。

    一是不能直在堆或栈中生成QToolTip对象。因为其构造函数为私有。
    二是从widget获取的tooltip不是tooltip对象,而是tooltip中的文本。
    三是tooltip跟本不是一个widget。所以不把它当作widget用。
    四是tooltip类是一个静态类,所以跟本不必生成tooltip对象就可以使用。
    五是tooltip类不能被定制,所以不能从它产生各种形状的tooltip窗口。

    QtoolTip有两种使用方式:
    一是静态tooltip。比如为一个widget设置一个不变的tooltip文本,当鼠标移上去时显示tooltip。此时很简单,只需调用widget的setToolTip()设置文本即可。
    二是动态tooltip。也就是一个widget上的tooltip是变化的。此时需要重写QWidget::event()函数,在里面判断事件类型,如果是QEvent::ToolTip,则控制显示的文本的内容,即可实现动态tooltip。

    看如下代码示例:

        bool SortingBox::event(QEvent *event)
         {
             if (event->type() == QEvent::ToolTip) {
                 QHelpEvent *helpEvent = static_cast<QHelpEvent *>(event);
                 int index = itemAt(helpEvent->pos());
                 if (index != -1) {
                     QToolTip::showText(helpEvent->globalPos(), shapeItems[index].toolTip());
                 } else {
                     QToolTip::hideText();
                     event->ignore();
                 }
         
                 return true;
             }
             return QWidget::event(event);
         }

    可以看到,是调用 QtoolTip::showText()在某个位置显示tooltip文本。

    那么,如果想随时显示tooltip,该怎么做呢?其实十分简单:直接调用QToolTip::showText(),指定要显示的位置就行了。因为tooltip类的函数跟本就相当于全局函数而已。

    呵呵,其实很简单,但从win32转过来的人,觉得真别扭。


  • 相关阅读:
    测试工具知识大集合
    滴滴,好未来,百度,快手,头条测试&测试开发岗面经(附面试题)
    做数据必知的十本书,你读过几本?
    如何有效延长假期?
    当程序猿第那几年!
    自动化测试中的那些误解和偏见
    北京VS上海:“活着为了工作”还是“工作为了生活”?
    程序员国庆相亲图鉴
    有赞精准测试实践
    IE中的文档兼容性
  • 原文地址:https://www.cnblogs.com/Vancamel/p/11217870.html
Copyright © 2011-2022 走看看