当前位置: 首页 > wzjs >正文

邓州微网站建设企业建站公司

邓州微网站建设,企业建站公司,遵义网约车资格证哪里申请,手机网站 方案状态机在QT中是一个很重要的概念,部件可以通过状态去处理相应的操作! 举个例子,以前的做法是,鼠标点击一个矩形,通过获取到鼠标按下状态后,在槽函数中处理相应操作,而这些操作是放在鼠标事件槽…

状态机在QT中是一个很重要的概念,部件可以通过状态去处理相应的操作!

举个例子,以前的做法是,鼠标点击一个矩形,通过获取到鼠标按下状态后,在槽函数中处理相应操作,而这些操作是放在鼠标事件槽函数中处理的,不是很好;

使用状态机的话,可以将这些操作封装在部件本身里面,通过设置不同的状态去处理不同的的事情,很好的避开了耦合性!

一、状态机

在Rectangle中有一个state属性,标识当前部件的状态;

在通过states: [ ] 给部件声明一个一个状态,即可在这些状态内部出处理操作;

例如:

定义了三个状态,分别是,normal,mouse_press,mouse_release

并且在mouse_press状态中处理将颜色设置为red,宽度设置为300;

在mouse_release状态中处理将颜色设置为blue,高度设置为300;

states: [                           State {                         name: "normal"              PropertyChanges {           target: root            color: "black"          }                           },                              State {                         name: "mouse_press"         PropertyChanges {           target: root            color: "red"            width: 300              }                           },                              State {                         name: "mouse_release"       PropertyChanges {           target: root            color: "blue"           height: 300             }                           }                               
]

之后只需要设置部件的  state  矩形即可进去相应的状态;

例如:state = "mouse_press"

可以通过鼠标点击切换状态:

MouseArea {                                    anchors.fill:  parent                      onPressed: {                               root.state = "mouse_press"             }                                          onReleased: {                              root.state = "mouse_release"           }                                          
}                  

代码:

// 状态机的使用                                                                     
// 可通过设置相应的状态去调整某些属性值,或者其他操作                                                  
Rectangle {                                                                   id: root                                                                  width: 200                                                                height: 100                                                               state: "normal"                                                           states: [                                                                 State {                                                               name: "normal"                                                    PropertyChanges {                                                 target: root                                                  color: "black"                                                }                                                                 },                                                                    State {                                                               name: "mouse_press"                                               PropertyChanges {                                                 target: root                                                  color: "red"                                                  width: 300                                                    }                                                                 },                                                                    State {                                                               name: "mouse_release"                                             PropertyChanges {                                                 target: root                                                  color: "blue"                                                 height: 300                                                   }                                                                 }                                                                     ]                                                                         MouseArea {                                                               anchors.fill:  parent                                                 onPressed: {                                                          root.state = "mouse_press"                                        }                                                                     onReleased: {                                                         root.state = "mouse_release"                                      }                                                                     }                                                                                                                                                
}                                                                             

运行效果

二、动画

以下介绍项目中比较常用的动画用法!

1. Transition

通过transition可处理状态,根据不同状态切换处理不一样的动画效果;

继续在上面代码中添加如下动画效果代码;

ColorAnimation {target: root        // 目标idduration: 1000        // 处理时间为1秒
}
// 颜色切换时的动画效果                                                           
transitions: [                                                          Transition {                                                        from: "mouse_press"                                             to: "mouse_release"                                             ColorAnimation {                                                target: root                                                duration: 1000                                              }                                                               NumberAnimation {                                               properties: "width"                                         from: 300  // 确保与mouse_press状态的宽度一致                         to: 200    // 回到normal状态的宽度或您希望的其他值                         duration: 1000                                              }                                                               },                                                                  Transition {                                                        from: "mouse_release"                                           to: "mouse_press"                                               ColorAnimation {                                                target: root                                                duration: 1000                                              }                                                               NumberAnimation {                                               properties: "height"                                        from: 300  // 或当前width值                                     to: 100                                                     duration: 1000                                              }                                                               }                                                                   
]                                                                    

运行效果

2. PropertyAnimation 与 NumberAnimation

PropertyAnimation 是设置特殊属性,例如color等非数值的属性;
NumberAnimation 是设置数值类属性;

prorerties 设置需要操作的属性名字;

from 设置起始数值

to 设置目标数值

duration 设置处理时常

target 设置处理的目标id

最后通过.start()  方法启动动画;

代码:

    // 动画                                    
Rectangle {                                  id: flashingblob                         width: 100                               height: 50                               color: "yellow"                          MouseArea {                              anchors.fill: parent                 onClicked: {                         // 通过start()方法开启动画效果             animateColor.start()             animateWidth.start()             animateY.start()                 }                                    }                                        // 属性                                    // 将颜色设置为绿色,2s                           PropertyAnimation {                      id: animateColor                     target: flashingblob                 properties: "color"  from: "yellow"                to: "green"                          duration: 2000                       }                                        // 数值                                    // 将宽度由100改为300,1s                       NumberAnimation {                        id: animateWidth                     target: flashingblob                 properties: "width"                  from: 100                            to: 300                              duration: 1000                       }                                        // 数值                                    // 将y由10改为100,1s                         NumberAnimation {                        id: animateY                         target: flashingblob                 properties: "y"                      from: 10                             to: 100                              duration: 1000                       }                                        
}                                            

运行效果

3. PropertyAnimation

立刻执行的动画

通过后面加上 on 关键字,标记需要处理的属性是什么

PropertyAnimation on x        需要处理的是x属性

to 设置目标数值

duration 设置处理时常

代码:

Rectangle {                       id: rect                      width: 100                    height: 100                   color: "red"                  PropertyAnimation on x {      to: 100                   duration: 1000            }                             PropertyAnimation on height { to: 300                   duration: 1000            }                             PropertyAnimation on color {  to: "green"               duration: 1000            }                             
}                                

运行效果

完!

http://www.dtcms.com/wzjs/252284.html

相关文章:

  • 做网站怎么选择服务器的大小永久开源的免费建站系统
  • 宿迁专业三合一网站开发怎么把网站排名到百度前三名
  • 如何做网站预览北京中文seo
  • 商城网站怎样做提高seo关键词排名
  • 临沂做商城网站建设最近一周的国内新闻
  • 天河做网站技术sem推广和seo的区别
  • 怎样免费注册网站域名网上售卖平台有哪些
  • 卫生室可以做网站吗网推技巧
  • 微信网页版官网二维码zac博客seo
  • 化妆品网站制作需要搜什么关键词能找到网站
  • wordpress二级目录伪静态seo服务外包费用
  • 网站建设属于无形资产哪一类大型网站建站公司
  • 软件开发背景介绍window优化大师
  • 光明乳业网站建设情况seo技术教学视频
  • 响应式网站国内外现状武汉疫情最新动态
  • php如何做局域网的网站建设百度官网认证免费
  • 服装网站设计公司产品推广文案100字
  • 微商如何做网站引流搜狗推广登录平台
  • 门户网站开发的价格软文
  • 德州市德城区城乡建设局网站seo优化排名技术百度教程
  • 用php做网站出现的问题网络推广怎么做方案
  • 如何做网站站长抖音宣传推广方案
  • 帮别人做网站的合作协议黑龙江网络推广好做吗
  • 做网站的图片传进去很模糊全网整合营销
  • php做网站常见实例qq关键词排名优化
  • 徐州手机网站建设制作常用的网络推广的方法有哪些
  • 建设网站报价单网络竞价推广托管公司
  • wordpress 修改目录id青岛seo博客
  • 网站绿色色调设计如何获取网站的seo
  • 龙岗区住房和建设局网站打不开如何制作百度网页