使用 QML Label 添加 ToolTip

6
我正在使用一个带有TextField的ToolTip,它可以正常工作。详情请参考ToolTip文档
RowLayout {
    property string toolTipText

    TextField {
        hoverEnabled: true
        ToolTip.visible: tooltipText ? hovered : false
        ToolTip.text: tooltipText 
    }
}

但是使用标签会导致它无法正常工作。在标签组件中,hoverEnabled 不可用。因此我尝试使用 MouseArea 来实现。
RowLayout {
    property string toolTipText

    Label {
        MouseArea { 
            anchors.fill: parent
            hoverEnabled: true
            ToolTip.visible: tooltipText ? hovered : false
            ToolTip.text: tooltipText 
        }
    }
}
工具提示会被显示,但不是在鼠标移到标签上。实际上,它是在进入窗口时显示的。

有什么解决方法吗?


2
hovered 不是 MouseArea 的属性,你的根对象是 Page 吗?hovered 属性可能来自它。使用 containsMouse 来检查是否悬停在 MouseArea 上。 - GrecKo
1个回答

12

MouseArea没有ToolTip,只有Label。因此,您必须使用MouseArea的containsMouse属性将其移动并激活:

RowLayout {

    Label {
        text: "label"
        property string toolTipText: "message"
        ToolTip.text: toolTipText
        ToolTip.visible: toolTipText ? ma.containsMouse : false
        MouseArea {
            id: ma
            anchors.fill: parent
            hoverEnabled: true
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接