5

我的 Qt 应用程序中有一个 QTableWidget。我在表格小部件的单元格中设置了 QTableWidgetItem 。当用户将鼠标悬停在表格的单元格上时,我需要显示工具提示。我已经在我的类中覆盖了 mouseMoveEvent() 并且我正在调用工具提示的方法来显示它。但它不起作用。我还将小部件的鼠标跟踪设置为 true。以下是我的代码:

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");
}

我在这里错过了什么吗?请让我知道如何显示此工具提示。

4

2 回答 2

12

您只需使用QTableWidgetItem::setToolTip()为每个 QTableWidgetItem 设置一个工具提示。当您创建小部件项目并设置其名称时,这样做可能是一个好主意。然后当用户将鼠标移到项目上时,QTableWidget 将显示项目的工具提示。

如果切换到基于模型的数据视图,则必须从 Model::data() 返回工具提示,角色 = Qt::ToolTipRole。

于 2012-07-18T09:39:52.493 回答
0

添加一些调试输出以查看何时调用 mouseMoveEvent。很可能是QTableWidget接收 mouseMoveEvents 而不是您的TableDialog

于 2012-07-18T09:39:41.777 回答