Qt 中MouseArea 的hoverEnabled使用
hoverEnabled属性:此属性保持悬停事件是否得到处理
hoverEnabled 为 false (默认情况):仅在响应按钮事件或按下按钮时处理鼠标事件。
hoverEnabled 为 true (悬停允许) :处理所有鼠标事件,即使没有按下鼠标按钮。主要影响:
- containsMouse属性
- onEntered()信号
- onExited()信号
- onPositionChanged()信号
eg:在我们开发控件的时候我们都需要根据控件的不同状态显示不同的颜色,这个时候最为常用的方法就是如下:
/*-------------------------------
* Author:Teacher zeng
* Date : 2020.05
* Unit description: 用Rectangle自定义button控件
*/
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Templates 2.12 as T
T.Button{
id: root
property alias txt:t.text
property alias border: bg.border
property alias color : bg.color
property string txtcolor: ""
property string txthovercolor : ""
Text {
id:t
anchors.centerIn: parent
// 当鼠标移动进入的时候显示 hover的颜色 其他情况显示正常颜色
color: area.containsMouse ? txthovercolor : txtcolor
}
MouseArea {
id: area
anchors.fill: parent;
hoverEnabled: parent.enabled; //必须将hoverEnabled设置为true 才可以使用containsMouse属性
onClicked: root.clicked();
cursorShape: Qt.PointingHandCursor
}
}