QML MouseArea onEntered hoverEnabled does not work
一个非常简单的场景,实际上是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 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的新手,所以我不知道问题可能在哪里。我整日用Google搜索来找到答案,但是一切都使我找到了我已经在使用的" set hoverEnabled:true"解决方案。
我正在使用包含VPlay的Qt 2.4.1的Windows(在此认为VPlay并不重要)
在您的代码段中,您似乎没有为Text元素分配大小(无论是显式还是通过锚定),因此它的宽度/高度为(0,0),这意味着它永远不会包含鼠标光标。请注意,在QtQuick中,项目的大小不是由项目的内容或绘制位置定义的(项目可以在其(位置,大小)矩形之外的任何位置进行绘制)。一个没有显式宽度/高度属性或锚点的项目,无论其在屏幕上的显示方式如何,其大小都将为(0,0)。
在以下示例中,鼠标区域的大小为360,从其父矩形(通过
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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也可以。