《处理鼠标和键盘事件》
所有的热爱都要不遗余力,真正喜欢它便给它更高的优先级,和更多的时间吧!
QML其它文章请点击这里: QT QUICK QML 学习笔记
姊妹篇:
● QT Quick QML入门笔记(一)应用程序结构分析和QML基础
● QT Quick QML入门笔记(四)锚(anchors)布局
1. 鼠标事件MouseArea
鼠标事件MouseArea常用元素:
● acceptedButtons 指定处理哪个按键,如LeftButton 、Qt.RightButton等
● clicked
● doubleClicked
● pressed
● released
● MouseEvent
处理鼠标事件的实例:
import QtQuick 2.11
import QtQuick.Window 2.11
import QtQuick.Controls 1.2
///鼠标事件
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
//中间对象
Text{
id:hello;
anchors.centerIn: parent; //处在Window中央
font.pixelSize: 50; //像素大小
}
MouseArea {
//父元素的整个区域都能触发MouseArea事件
anchors.fill: parent;
//接收左键和右键
acceptedButtons: Qt.LeftButton | Qt.RightButton;
onClicked: {
if(mouse.button === Qt.LeftButton){
hello.text = "leftButton";
}else{
hello.text = "rightButton";
}
}
onDoubleClicked: {
if(mouse.button === Qt.LeftButton){
hello.text = "double leftButton";
}else{
hello.text = "double rightButton";
}
}
}
}
运行结果:
当左键和右键分别双击的时候,结果如下:
2. Keys键盘事件
处理Keys键盘事件的实例:
//接上面代码
///鼠标与键盘事件
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
//中间对象
Text{
id:hello;
font.pixelSize: 50; //像素大小
Keys.onLeftPressed: x -= 10;
Keys.onRightPressed: x += 10;
Keys.onUpPressed: y -= 10;
Keys.onDownPressed: y += 10;
focus: true; // 只有焦点的Item才能处理按键事件
text: "Hello World";
}
}
keys键盘只能附加在其它属性上,如上Keys附加在Text上。当输入键盘的上下左右的时候,文字x y位置发生改变。
附加属性和附加信号处理程序是使对象能够使用其他属性或信号处理程序进行注释(annotate)的机制
Item 可以通过附加属性 Keys 来处理按键。Keys 对象是 Qt Quick 提供的,专门供 Item 处理按键事件的对象。它定义了很多针对特定按键的信号,比如 onReturnPressed ,还定义了更为普通的 onPressed 和 onReleased 信号,一般地,你可以使用这两个信号来处理按键(请对照 Qt C++ 中的 keyPressEvent 和 keyReleaseEvent 来理解)。它们有一个名字是 event 的 KeyEvent 参数,包含了按键的详细信息。如果一个按键被处理, event.accepted 应该被设置为 true 以免它被继续传递。<
常见按键信号如下:
● enterPressed/ retrunPressed
● pressed/ released
● leftPressen/ rightPressed /upPressed/ dowmPressed //上述已使用
● digit[0~9] Pressed
● spacePressed/ deletePressed /escapePressed
● KeyEvent
参考链接:
QML其它文章请点击这里: QT QUICK QML 学习笔记