一个非常简单的场景,实际上:
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很新,我不知道问题出在哪里。我用Google搜索了一整天来找到答案,但是所有内容都引导我进入“set hoverEnabled:true”解决方案,我已经在使用它了。
我正在使用Qt 2.4.1开发包含VPlay的Windows(不认为VPlay在这里很重要)
答案 0 :(得分:2)
从你的代码片段来看,你看起来并没有为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也可以。