1. 程式人生 > >Qt QToolTip詳解

Qt QToolTip詳解

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

相關推薦

Qt QToolTip

Qt4中的tooltip與win32中的tooltip有很多不一樣的地方,下面來總結一下。 一是不能直在堆或棧中生成QToolTip物件。因為其建構函式為私有。 二是從widget獲取的tooltip不是tooltip物件,而是tooltip中的文字。 三是tooltip跟

QT——delete

1 Qt半自動的記憶體管理 Qt中已下情況new出的物件可以不用親自去delete: (1)QObject及其派生類的物件,如果其parent非0,則其parent析構時會析構該物件,除此之外,有些類的物件可以接收設定一些特別的標記,例如: 1) QWidget及其派生類的物件,可以

QT QMessageBox

現在還是繼續來說說Qt的標準對話方塊吧! 這次來說一下QMessageBox以及類似的幾種對話方塊。 先來看一下最熟悉的QMessageBox::information。我們在以前的程式碼中這樣使用過: QMessageBox::information(NULL, "Tit

QT字型

1、綜述 首先看看QT官方的幫助文件: QFont類指定用於圖形文字的字型。 建立QFont物件時,您可以指定希望字型具有的各種屬性。Qt將使用具有指定屬性的字型,或者如果不存在匹配字型,Qt將使用最接近的匹配安裝字型。實際使用的字型屬性可從QFontInf

Qt::Painter

轉自:[QPainter類參考](http://www.kuqin.com/qtdocument/qpainter.html) QPainter類參考 QPainter類低水平的繪製,例如在視窗部件上。 詳情請見…… 繼承了Qt。 公有成員 en

QtQt::WA_DeleteOnClose

當用戶關閉一個主視窗時,預設行為是隱藏它,所以它還會保留在記憶體中。對於數量大的主視窗會造成一定的問題。解決辦法是在建構函式中對Qt::WA_DeleteOnClose的屬性進行設定:     Mai

C++框架_之Qt的窗口部件系統的-上

同時 窗體 包含 鼠標 對象模型 種類 動態分配內存 對話框 狀態 C++框架_之Qt的窗口部件系統的詳解-上 第一部分概述 第一次建立helloworld程序時,曾看到Qt Creator提供的默認基類只有QMainWindow、QWidget和QDialog三種。是的,

27.QT-QProgressBar動態實現多彩進度條()

ID public lin 就是 def nim qslider etl #define 如下圖所示: 效果如下: (gif錄制的動畫效果不好,所以顏色有間隙) 介紹 通過qss實現,只需要一個多彩背景圖,通過QImage獲取顏色,然後來設置進度條,便

20.QT-Qpixmap實現圖片鼠標縮放,鼠標拖動示例()

下滑 resize pix slot https qpi map += als #include "widget.h" Widget::Widget(): BigButton("放大",this), LittleButton("縮小",this),

QT---之QByteArray關於十六進位制賦值

本文章主要總結QByteArray類的用法,主要是總結如何給QByteArray的物件賦值十六進位制數和顯示該十六進位制數以及十六進位制數在QByteArray中的儲存形式,具體的例項如下所述:(字元表示的十六進位制數:'\xFF') (Qt中QByteArray儲存的十六進位制數是0xff,實

QT---之正則表示式QRegExp

引言     正則表示式(regular expression)就是用一個“字串”來描述一個特徵,然後去驗證另一個“字串”是否符合這個特徵。比如 表示式“ab+” 描述的特徵是“一個 'a' 和 任意個 'b' ”,那麼 'ab', 'abb', 'abbbbbbbbb

qt tableview 選擇模式 支援不連續選中

這是官方文件的選擇模式詳解 QAbstractItemView::SingleSelection 1 When the user s

Qt

Qt簡介        Qt是一個1991年由Qt Company開發的跨平臺C++圖形使用者介面應用程式開發框架。它既可以開發GUI程式,也可用於開發非GUI程式,比如控制檯工具和伺服器。Qt是面向物件的框架,使用特殊的程式碼生成擴充套件(稱為元物件編譯

QT訊號槽connect函式

使用QT開發時,通常使用connect函式只傳遞四個引數: connect(Sender,SIGNAL(signal),Receiver,SLOT(slot)); 所以我們有可能認為該函式就只有四個引數,但實際上是有第五個引數的,只是通常該函式已經給第五個引數賦值了而已,我們所使用的是預設值

QT的自動滾動區QScrollArea的用法,圖文

QScrollArea屬於控制元件容器類,可以直接在ui中拖出來。 對於QScrollArea,最難搞懂的就是:如何控制它,才能讓它在我們想要出現滾動條的時候出現滾動條。 我們拖入一個QScrollArea,再向他裡面拖入4個button,觀察資訊如下: 可

Qt 選擇性編譯和庫裁減 qconfig(轉載)

Qt 選擇性編譯和庫裁減是本文將要介紹的內容,編譯一次Qt要耗費太多的時間, 常常是越著急用它,編起來越慢。其實通過很簡單的幾招可以幫你節省編譯的時間。 下面就一一道來: 編譯之前確定哪些功能是不必要的,對編譯樹進行簡單裁剪 比如最常見的,像demos, exampl

Qt容器(QMap/QHash 等)使用

一、Qt容器的遍歷器 Qt 的容器類提供了兩種風格的遍歷器:Java 風格和 STL 風格。 每一種容器都有兩種 Java 風格的遍歷器:一種提供只讀訪問,一種提供讀寫訪問: 容器 只讀遍歷器 讀寫遍歷器

Qt Quick 之 Hello World 圖文

                    在上一篇文章,《QML 語言基礎》中,我們介紹了 QML 語言的語法,在最後我們遺留了一些問題沒有展開,這篇呢,我們就正式開始撰寫 Qt Quick 程式,而那些問題,隨著本系列文章的展開也會一一被幹掉。    在開始介紹 Qt Quick 應用的基本元素之前,我們先來

QT中的qmake

1.首先,感性的認識是,qmake可以利用原始檔(包括標頭檔案h,實現檔案cpp,qt的ui檔案等等)生成各種不同型別的工程,工程需要的Makefile檔案,可執行的與不可執行的,這取決於所用的模板(包括app、lib、subdirs、vcapp、vclib)。 2.建立pro檔案,新增各種原始檔,還可

qt延時之QApplication::processEvents

應用場景一:處理密集耗時的事情 有時候需要處理一些跟介面無關的但非常耗時的事情,這些事情跟介面在同一個執行緒中,由於時間太長,導致介面無法響應,處於“假死”狀態。例如:在應用程式中儲存檔案到硬碟上,從開始儲存直到檔案儲存完畢,程式不響應使用者的任何操作,視窗也不會重新繪製,從而處於“無法響應”狀