import QtQuick 2.0
Item {
Rectangle {
id: rect
// MouseArea事件
MouseArea {
enabled: false// 设置为false,不再处理鼠标事件
pressed:{} // 是否按住了鼠标按钮,可以实现在鼠标按下时执行一些操作
containsMouse: {} // 当前是否有光标在MouseArea上,只有鼠标的按钮按下时才会被检测到
onClicked: {
// mouse.button 获取按下的按键
// mouse.button取值有 Qt.LeftButton, Qt.RightButton, Qt.MiddleButton
if (mouse.button === Qt.RightButton) {
}
// mouse.modifiers 获取按下的键盘修饰符等
// Qt.NoModifier没有修饰键, Qt.ShiftModifier shift按键, Qt.ControlModifier Ctrl按键, Qt.AltModifier alt按键
if (mouse.modifiers === Qt.ControlModifier) {
}
}
onDoubleClicked: {}
onPressed: {}
hoverEnabled: true // 开启才能报告鼠标光标位置改变
onPositionChanged: {}
onEntered: {}
onExited: {}
// drag可以拖拽某个项目
drag.target: rect // 指定拖动项目的id
// drag.active: 获取项目当前是否增在被拖动的信息
// 拖拽方向
// Drag.XAxis(水平方向)
// Drag.YAxis(垂直方向)
// Drag.XandYAxis(水平垂直方向)
drag.axis: Drag.XAxis
drag.minimumX: 0 // min和max限制项目在指定方向上拖拽的距离
drag.maximumX: 1
}
// 当用户按下或释放一个按键时,会按以下步骤处理:
// 第一步: Qt获取键盘动作并产生一个键盘事件
// 第二步: 如果包含QDeclarativeView的Qt部件具有焦点,那么键盘事件会传递给它,否则将进行常规的按键处理
// 第三步: 场景将键盘事件交付给具有活动焦点的QML项目。如果没有项目具有活动焦点,键盘事件会被忽略,然后继续常规的按键处理
// 第四步: 如果具有活动焦点的QML项目接受了该键盘事件,那么传播将停止。否则,该事件会递归的传递到每一个项目的父项目
// 第五步: 如果达到了跟项目,该键盘事件会被忽略而继续常规的Qt按键处理
// Keys附加属性提供了基本的按键处理
Keys.onPressed: {
if (event.key === Qt.Key_A) {
event.accepted = true
}
}
// KeyNavigation可以用来实现使用方向键或tab键来进行项目导航
// 属性有: backtab, tab, priority, down, left, right, up 等
KeyNavigation.left: parent.left
Text {
// 一个项目是否具有活动焦点,可以通过Item.activeFocus属性进行查询
text: activeFocus ? "have active foucus" : "do not have active foucus"
}
// FocusScope 指定焦点作用域
FocusScope {
x: rect12.x
y: rect12.y
width: rect12.width
height: rect12.height
Rectangle {
id: rect12
focus: true
}
}
}
// 定时器
Timer {
interval: 500
running: true // false 停止定时器
repeat: true // false 只触发一次
onTriggered: time.text = Date().toString()
}
Text {
id: time
text: "timer"
}
Rectangle {
//Loader 用来动态加载可见的QML组件,可以加载一个QML文件或一个组件对象
Loader {id: pageLoader}
MouseArea {
onClicked: pageLoader.source = "pageq.qml"
}
// 任何从被加载的项目中发射的信号都可以使用Connections元素进行接收
Connections {
}
}
}