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轉過來的人,覺得真別扭。


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM