2012-07-18 228 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