QML MouseArea onEntered hoverEnabled 不起作用
Posted
技术标签:
【中文标题】QML MouseArea onEntered hoverEnabled 不起作用【英文标题】:QML MouseArea onEntered hoverEnabled does not work 【发布时间】:2014-02-09 03:59:18 【问题描述】:其实是一个非常简单的场景:
Text
text: "Hover me!"
font.family: "Arial"
font.pointSize: 16
MouseArea
anchors.fill: parent
hoverEnabled: true
onEntered:
parent.color = "#ffffff"
onExited:
parent.color = "#000000"
如您所见,我想要的只是当我将其悬停时文本颜色会发生变化。但是,它仅在我按住鼠标左键时才有效。由于我对 Qt 很陌生,所以我不知道问题可能出在哪里。我整天在谷歌上寻找答案,但一切都让我找到了我已经在使用的“set hoverEnabled: true”解决方案。
我正在使用 Qt 2.4.1 开发 Windows,包括 VPlay(不认为 VPlay 在这里很重要)
【问题讨论】:
【参考方案1】:从您的 sn-p 来看,您似乎没有为 Text 元素分配大小(显式或通过锚定),因此它的宽度/高度为 (0,0),这意味着它永远不会包含鼠标光标。请注意,在 QtQuick 中,项目的大小不是由它们的内容或它们绘制的位置定义的(一个项目可以在其(位置,大小)矩形之外的任何地方绘制)。没有明确的宽度/高度属性或锚定的项目将具有 (0,0) 的大小,无论它如何显示在屏幕上。
在以下示例中,鼠标区域的大小为 360,360 继承自其父矩形(通过anchors.fill: parent
):
import QtQuick 2.0
Rectangle
width: 360
height: 360
color: "black"
Text
anchors.centerIn: parent
text: qsTr("Hello World")
color: mouseArea.containsMouse ? "red" : "white"
MouseArea
id: mouseArea
anchors.fill: parent
hoverEnabled: true
我更喜欢在此处使用带有 containsMouse 的属性绑定的声明性方法,但 onEntered/onExited 也可以。
【讨论】:
我的代码到目前为止还不错,感谢您的回复。问题属于 V-Play,因为 V-Play 目前在其引擎中不支持悬停状态。以上是关于QML MouseArea onEntered hoverEnabled 不起作用的主要内容,如果未能解决你的问题,请参考以下文章