QML笔记——MouseArea的覆盖区域
2024-10-21 03:55:19
问题摘要:
初学QML,今天发现一个奇怪的现象,调用MouseArea的位置不同,结果不同。
1、一个简单的qml示例
Rectangle {
id: root
width: 320
height: 200
Button{
anchors.centerIn:parent;
text:"Quit";
style:ButtonStyle{
background:Rectangle{
implicitWidth:170;
implicitHeight:50;
border.width:control.pressed ? 5 : 1;
border.color:(control.hovered||control.pressed) ? "green" :"red";
}
}
onClicked:{
console.log("Quit");
//Qt.quit()
}
}
}
正常效果如下:
2、 添加MouseArea对象
Rectangle {
id: root
width: 320
height: 200
Button{
anchors.centerIn:parent;
text:"Quit";
style:ButtonStyle{
background:Rectangle{
implicitWidth:170;
implicitHeight:50;
border.width:control.pressed ? 5 : 1;
border.color:(control.hovered||control.pressed) ? "green" :"red";
}
}
onClicked:{
console.log("Quit");
//Qt.quit()
}
} MouseArea{
anchors.fill:parent;
acceptedButtons: Qt.LeftButton | Qt.RightButton
onDoubleClicked:{
console.log("DoubleButton");
}
onClicked:{
if(mouse.button == Qt.LeftButton){
console.log("LeftButton");
}else if(mouse.button == Qt.RightButton){
console.log("RightButton");
Qt.quit();
}
}
}
}
左键点击Quit 按钮没有反应:按钮宽度没有变化,不会输出console.log("Quit"); 而输出console.log("LeftButton")。
3、调换MouseArea位置:
Rectangle {
id: root
width: 320
height: 200 MouseArea{
anchors.fill:parent;
acceptedButtons: Qt.LeftButton | Qt.RightButton
onDoubleClicked:{
console.log("DoubleButton");
}
onClicked:{
if(mouse.button == Qt.LeftButton){
console.log("LeftButton");
}else if(mouse.button == Qt.RightButton){
console.log("RightButton");
Qt.quit();
}
}
} Button{
anchors.centerIn:parent;
text:"Quit";
style:ButtonStyle{
background:Rectangle{
implicitWidth:170;
implicitHeight:50;
border.width:control.pressed ? 5 : 1;
border.color:(control.hovered||control.pressed) ? "green" :"red";
}
}
onClicked:{
console.log("Quit");
//Qt.quit()
}
}
}
Quit按钮可以正常反应:
总结:
MouseArea的调用,有先后优先级,后续的设置会覆盖前面的设置。局部的调用没有被触发。
最新文章
- angular2之前端篇—1(node服务器分支)
- Canny边缘检测及图像缩放之图像处理算法-OpenCV应用学习笔记四
- 织梦如何重新安装 织梦dir 二次安装
- Opera放弃自家内核转投WebKit的背后(转)
- Angular系列----AngularJS入门教程02:静态模板(转载)
- 三维网格形变算法(Laplacian-Based Deformation)
- 菜鸟学Linux命令:chmod命令和数字文件权限
- UITextFiled
- JavaScript navigator 对象(转)
- Hibernate中的一对多关系详解(2)
- Linux 下源码安装JDK
- 再起航,我的学习笔记之JavaScript设计模式15(组合模式)
- mysql分组查询前n条数据
- 给定桩号获取纵断面中的高程值(c# for civil3d)
- Cortex-M 实现互斥操作的三种方法
- 《JAVA程序设计》结对编程联系_四则运算(第一周:阶段总结)
- linux 学习笔记 ftp
- <;转载>; bat 脚本基本语法 http://blog.csdn.net/bluedusk/article/details/1500629
- Docker三剑客之Docker Swarm
- opencv实现canopy算法