Qt:在QLabel对象上显示鼠标光标下的文本 我使用C++ QT编写一个GUI应用程序,我想给它添加一个精确的特性:我有一个自定义类继承了一个面板中的QLabel对象,我希望在这个区域上方有一个显示在鼠标光标中的信息,该信息将是该精确面板中光标坐标的文本函数。我一直在寻找实现这一点的例子,但我现在甚至在想,我必须对我需要的对象有一个非常模糊的概念,因为我的研究没有得到任何类似的结果。你对如何实施它有想法吗
先谢谢你 编辑:推动我的研究使我想到:Qt:在QLabel对象上显示鼠标光标下的文本 我使用C++ QT编写一个GUI应用程序,我想给它添加一个精确的特性:我有一个自定义类继承了一个面板中的QLabel对象,我希望在这个区域上方有一个显示在鼠标光标中的信息,该信息将是该精确面板中光标坐标的文本函数。我一直在寻找实现这一点的例子,但我现在甚至在想,我必须对我需要的对象有一个非常模糊的概念,因为我的研究没有得到任何类似的结果。你对如何实施它有想法吗,c++,qt,C++,Qt,先谢谢你 编辑:推动我的研究使我想到: 显然,QToolTip对象是我正在查找的对象,但我需要将其与MouseEvent关联,使其仅在鼠标位于QLabel上时出现,并查看它。。。当然,建议仍然非常受欢迎;) 希望这不是你已经尝试过但没有成功的东西。但从您的回答来看,您似乎看到的是QToolTip对象,而不是QWidget,它有一个调用的方法来支持工具提示 也就是说,如果您已经有一个从QLabel派生的自定义类,那么您可以截获鼠标事件并设置工具提示消息。例如: bool MyLabelClass:
显然,QToolTip对象是我正在查找的对象,但我需要将其与MouseEvent关联,使其仅在鼠标位于QLabel上时出现,并查看它。。。当然,建议仍然非常受欢迎;) 希望这不是你已经尝试过但没有成功的东西。但从您的回答来看,您似乎看到的是
QToolTip
对象,而不是QWidget
,它有一个调用的方法来支持工具提示
也就是说,如果您已经有一个从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;
}
bool MyLabelClass::事件(QEvent*事件)
{
if(event.type()==QEvent::MouseMove)
{
QMouseEvent mouseEvent=动态_cast(事件);
if(mouseEvent)
{
QString工具提示(“鼠标位于x:%1,y:%2”);
参数(mouseEvent.globalX(),mouseEvent.globalY());
设置工具提示(toolTipStr);
}
}
//始终返回false,因为我们没有阻止事件。
返回false;
}
希望这不是你已经尝试过但没有成功的东西。但从您的回答来看,您似乎看到的是QToolTip
对象,而不是QWidget
,它有一个调用的方法来支持工具提示
也就是说,如果您已经有一个从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;
}
bool MyLabelClass::事件(QEvent*事件)
{
if(event.type()==QEvent::MouseMove)
{
QMouseEvent mouseEvent=动态_cast(事件);
if(mouseEvent)
{
QString工具提示(“鼠标位于x:%1,y:%2”);
参数(mouseEvent.globalX(),mouseEvent.globalY());
设置工具提示(toolTipStr);
}
}
//始终返回false,因为我们没有阻止事件。
返回false;
}
希望这不是你已经尝试过但没有成功的东西。但从您的回答来看,您似乎看到的是QToolTip
对象,而不是QWidget
,它有一个调用的方法来支持工具提示
也就是说,如果您已经有一个从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;
}
bool MyLabelClass::事件(QEvent*事件)
{
if(event.type()==QEvent::MouseMove)
{
QMouseEvent mouseEvent=动态_cast(事件);
if(mouseEvent)
{
QString工具提示(“鼠标位于x:%1,y:%2”);
参数(mouseEvent.globalX(),mouseEvent.globalY());
设置工具提示(toolTipStr);
}
}
//始终返回false,因为我们没有阻止事件。
返回false;
}
希望这不是你已经尝试过但没有成功的东西。但从您的回答来看,您似乎看到的是QToolTip
对象,而不是QWidget
,它有一个调用的方法来支持工具提示
也就是说,如果您已经有一个从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;
}
bool MyLabelClass::事件(QEvent*事件)
{
if(event.type()==QEvent::MouseMove)
{
QMouseEvent mouseEvent=动态_cast(事件);
if(mouseEvent)
{
QString工具提示(“鼠标位于x:%1,y:%2”);
参数(mouseEvent.globalX(),mouseEvent.globalY());
设置工具提示(toolTipStr);
}
}
//始终返回false,因为我们没有阻止事件。
返回false;
}
为什么不重新实现paintEvent,并使用无效qpaint::drawText(const QPoint&position,const QString&text)
方法?为什么不重新实现paintEvent,并使用无效qpaint::drawText(const QPoint&position,const QString&text)
方法?为什么不重新实现paintEvent,并使用void qpaint::drawText(const QPoint&position,const QString&text)
方法?为什么不重新实现paintEvent,并使用void qpaint::drawText(const QPoint&position,const QString&text)
方法?您好,谢谢您的建议。我可能不得不重新实现一些东西,因为我对QToolTip对象不满意(它需要一些延迟才能显示,并且在QLabel上移动鼠标时无法实现)。你认为你的解决方案能让我在用于绘图的QLabel上看到一些整洁的东西吗?(我一边问一边测试…@learningisamse我想了一会儿。为什么不实现自己的工具提示类呢?类似于-ToolTip::ToolTip(const-QString&text):QLabel(0,Qt::ToolTip | Qt::BypassGraphicsProxyWidget){setText(text)}。然后在标签的mouseMoveEvent中,只需调用工具提示->移动(事件->getGlobalPos())。这样你将完全控制工具提示。嗨,谢谢你的建议。我可能不得不重新实现一些东西,因为我对QToolTip对象不满意(它需要一些延迟才能显示,并且在QLabel上移动鼠标时无法实现)。