-
UID:153146
-
- 注册时间2014-06-18
- 最后登录2015-01-07
- 在线时间20小时
-
- 发帖38
- 搜Ta的帖子
- 精华0
- 金钱416
- 威望50
- 贡献值0
- 好评度40
-
访问TA的空间加好友用道具
|
qml中的Flickable,Flipped元素 qml中提供的Flickable元素,使得可以在qml中提供一个可以拖拽和弹动的元素,手持触摸设备和传动的pc不一样,传统的视图单位通过滚动条或者上下按钮来滚动视图,这种方法用在触摸设备,交互必然会不太方便。Flickable元素的clip属性可以设置为true,来使它不加载超出它区域的内容,如下代码- Flickable{
- width: 200
- height:200
- clip:true
- contentHeight: image.height
- contentWidth: image.width
- Image{
- id:image
- source: "qrc:///images/images/IPXG2879.JPG"
- }
- }
image里现实的图片非常大,可以通过拖动正方形区域的地方,来查看图片其他地方,如果clip属性不设置或者设置为false,则会全部加载,包括image超出区域的地方。Flipable提供一个可以翻转的元素,像一个卡片一样,可以通过同时使用Rotation,State,Transition来使他旋转。front和back分别表示其正面和反面。代码: - Flipable{
- id:flipitem
- width:200
- height:200
- property bool flipped: false
- front: Image {
- source: "qrc:///images/images/front.png"
- anchors.centerIn: parent
- }
- back:Image{
- source:"qrc:///images/images/back.png"
- anchors.centerIn: parent
- }
- transform: Rotation{
- id:transform
- origin.x:flipitem.width/2
- origin.y:flipitem.height/2
- axis.x:0
- axis.y:1
- axis.z:0
- angle:0
- }
- states:State{
- name:"back"
- PropertyChanges {
- target: transform.angle
- angle:180
- }
- }
- transitions: Transition {
- NumberAnimation {
- target:transform
- duration:400
- }
- }
- MouseArea{
- anchors.fill: parent
- onClicked: {
- flipitem.flipped=!flipitem.flipped
- if(flipitem.flipped)
- flipitem.state="back"
- else
- flipitem.state=""
- }
- }
- }
|