【问题标题】:Qt: showing text under the mouse cursor when over a QLabel objectQt:在 QLabel 对象上时在鼠标光标下显示文本
【发布时间】:2014-02-18 21:18:09
【问题描述】:

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

提前谢谢你。

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

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

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    希望这不是您已经尝试过但没有成功的方法。但从您的回答来看,您似乎正在查看 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;
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 您好,感谢您的建议。我可能不得不重新实现一些东西,因为我对 QToolTip 对象不满意(显示需要一些延迟,并且当您将鼠标移到 QLabel 上时不会实现)。您是否认为您的解决方案可以让我在用于绘图的 QLabel 上整齐地出现一些东西? (我正在测试,因为我在问这个......)
      • @Learningisamess 我想了一会儿。为什么不实现自己的工具提示类?类似的东西 - ToolTip::ToolTip(const QString& text) : QLabel(0, Qt::ToolTip | Qt::BypassGraphicsProxyWidget) {setText(text)}。然后在标签的 mouseMoveEvent 中调用 tooltip->move(event->getGlobalPos())。这样,您将绝对控制工具提示。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多