我正在使用C ++ Qt编写一个带有GUI的应用程序,我想为我添加一个精确的功能:我有一个继承自面板中QLabel对象的自定义类,我想要一个在该区域上方显示鼠标光标的信息时,该信息将是该精确面板中光标坐标的文本功能。我一直在寻找实现它的例子,但我现在甚至认为我必须对我需要的对象有一个非常模糊的想法,因为我的研究没有返回任何类似的东西。你知道如何实现它吗?
提前谢谢。
编辑:推动我的研究使我得到了这个:http://qt-project.org/doc/qt-4.8/qtooltip.html
显然我正在寻找一个QToolTip对象,但是我需要将它与一个MouseEvent关联起来,只有当鼠标悬停在QLabel上时才能看到它,然后查看它...当然,建议仍然非常受欢迎;)
答案 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 )
方法?