• 4256阅读
  • 0回复

[原创]qml中的Flickable,Flipped元素 [复制链接]

上一主题 下一主题
离线seanyxie
 

只看楼主 倒序阅读 楼主  发表于: 2014-07-15
qml中的Flickable,Flipped元素

qml中提供的Flickable元素,使得可以在qml中提供一个可以拖拽和弹动的元素,手持触摸设备和传动的pc不一样,传统的视图单位通过滚动条或者上下按钮来滚动视图,这种方法用在触摸设备,交互必然会不太方便。

Flickable元素的clip属性可以设置为true,来使它不加载超出它区域的内容,如下代码
  1. Flickable{
  2.         width: 200
  3.         height:200
  4.         clip:true
  5.         contentHeight: image.height
  6.         contentWidth: image.width
  7.         Image{
  8.             id:image
  9.             source: "qrc:///images/images/IPXG2879.JPG"
  10.         }
  11.     }



image里现实的图片非常大,可以通过拖动正方形区域的地方,来查看图片其他地方,如果clip属性不设置或者设置为false,则会全部加载,包括image超出区域的地方。



Flipable提供一个可以翻转的元素,像一个卡片一样,可以通过同时使用Rotation,State,Transition来使他旋转。front和back分别表示其正面和反面。

代码:

  1. Flipable{
  2.         id:flipitem
  3.         width:200
  4.         height:200
  5.         property bool flipped: false
  6.         front: Image {
  7.             source: "qrc:///images/images/front.png"
  8.             anchors.centerIn: parent
  9.         }
  10.         back:Image{
  11.             source:"qrc:///images/images/back.png"
  12.              anchors.centerIn: parent
  13.         }
  14.         transform: Rotation{
  15.             id:transform
  16.             origin.x:flipitem.width/2
  17.             origin.y:flipitem.height/2
  18.             axis.x:0
  19.             axis.y:1
  20.             axis.z:0
  21.             angle:0
  22.         }
  23.         states:State{
  24.             name:"back"
  25.             PropertyChanges {
  26.                 target: transform.angle
  27.                 angle:180
  28.             }
  29.         }
  30.         transitions: Transition {
  31.             NumberAnimation {
  32.                 target:transform
  33.                 duration:400
  34.             }
  35.         }
  36.         MouseArea{
  37.             anchors.fill: parent
  38.             onClicked: {
  39.                 flipitem.flipped=!flipitem.flipped
  40.                 if(flipitem.flipped)
  41.                     flipitem.state="back"
  42.                 else
  43.                     flipitem.state=""
  44.             }
  45.         }
  46.     }


我奔向太阳,在日落前必将找到你。
欢迎光临Qt技术博客 http://www.seanyxie.com
快速回复
限100 字节
 
上一个 下一个