2012-07-18 224 views
2

我的Qt應用程序中有一個QTableWidget。我在表格小部件的單元格中設置了QTableWidgetItem。當用戶懸停在桌子的單元格上時,我需要顯示一個工具提示。我在我的類中重寫了mouseMoveEvent(),並且我正在調用工具提示的方法來顯示它。但它不起作用。我還將小部件的鼠標追蹤設置爲true。以下是我的代碼:在QTableWidget中顯示工具提示

void TableDialog::mouseMoveEvent(QMouseEvent *event) 
{ 
    QPoint pos = event->pos(); 
    QTableWidgetItem *item = ui.tableWidget->itemAt(pos); 
    if(!item) 
     return; 
    QToolTip::showText(ui.tableWidget->viewport()->mapToGlobal(pos), "Sample tool tip using mouseMoveEvent in TableDialog class"); 
} 

我在這裏錯過了什麼嗎?請讓我知道如何顯示此工具提示。

回答

5

你只需要設置爲使用QTableWidgetItem::setToolTip()每個QTableWidgetItem的刀尖mouseMoveEvents。創建widget項目並設置其名稱時,這可能是一個好主意。然後當用戶將鼠標移動到其上時,QTableWidget將顯示該項目的工具提示。

如果切換到基於模型的數據視圖,您必須從model :: data()返回工具提示,其中role = Qt :: ToolTipRole。

0

添加一些調試輸出以查看何時調用mouseMoveEvent。 它很可能是該QTableWidget接收,而不是你TableDialog