Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt:在QLabel对象上显示鼠标光标下的文本 我使用C++ QT编写一个GUI应用程序,我想给它添加一个精确的特性:我有一个自定义类继承了一个面板中的QLabel对象,我希望在这个区域上方有一个显示在鼠标光标中的信息,该信息将是该精确面板中光标坐标的文本函数。我一直在寻找实现这一点的例子,但我现在甚至在想,我必须对我需要的对象有一个非常模糊的概念,因为我的研究没有得到任何类似的结果。你对如何实施它有想法吗_C++_Qt - Fatal编程技术网

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上移动鼠标时无法实现)。