Qt:在QLabel对象上显示鼠标光标下的文本

时间:2014-02-18 21:18:10

标签: c++ qt

我正在使用C ++ Qt编写一个带有GUI的应用程序,我想为我添加一个精确的功能:我有一个继承自面板中QLabel对象的自定义类,我想要一个在该区域上方显示鼠标光标的信息时,该信息将是该精确面板中光标坐标的文本功能。我一直在寻找实现它的例子,但我现在甚至认为我必须对我需要的对象有一个非常模糊的想法,因为我的研究没有返回任何类似的东西。你知道如何实现它吗?

提前谢谢。

编辑:推动我的研究使我得到了这个:http://qt-project.org/doc/qt-4.8/qtooltip.html

显然我正在寻找一个QToolTip对象,但是我需要将它与一个MouseEvent关联起来,只有当鼠标悬停在QLabel上时才能看到它,然后查看它...当然,建议仍然非常受欢迎;)

2 个答案:

答案 0 :(得分:2)

希望这不是你已经尝试过但不起作用的东西。但是从您的回答来看,您似乎正在查看QToolTip对象而不是QWidget,它有一个名为setToolTip的方法来支持工具提示。

如果您已经拥有从QLabel派生的自定义类,则可以截取鼠标事件并设置工具提示消息。例如:

bool MyLabelClass::event ( QEvent* event )
{
    if( event.type() == QEvent::MouseMove )
    {
        QMouseEvent mouseEvent = dynamic_cast< QMouseEvent* >( event );

        if( mouseEvent )
        {
            QString toolTipStr( "Mouse is at x:%1, y:%2" );
            toolTipStr.arg( mouseEvent.globalX(), mouseEvent.globalY() ); 
            setToolTip( toolTipStr );
        }
    } 

    // Always return false as we aren't blocking the event.
    return false;
}

答案 1 :(得分:1)

为什么不重新实现paintEvent,并使用void QPainter::drawText ( const QPoint & position, const QString & text )方法?