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

北京教育云平台网站建设wordpress后台入口

北京教育云平台网站建设,wordpress后台入口,西安房价走势最新消息,重庆五号线金建站在实际项目中,有时候我们写好一个组件,但不是立即加载出来,而是触发某些条件后才动态的加载显示出来,当处理完某些操作后,再次将其关闭掉; 这样的需求,可以使用 Component 包裹着组件&#xff…

在实际项目中,有时候我们写好一个组件,但不是立即加载出来,而是触发某些条件后才动态的加载显示出来,当处理完某些操作后,再次将其关闭掉;

这样的需求,可以使用 Component 包裹着组件,然后使用 Loader 去动态的加载和关闭;

Component 可以加载任何部件,例如,Rectangle,Button,Image等等

如果需要包裹多个部件,使用 Item {  } 包裹着这些部件即可;

Component {Item {Rectangle { }Button { }......}
}

Component 有两个很常用信号,就是创建前触发和销毁前触发,类似构造函数和析构函数,也可以说时回调;

只需要在定义该槽函数即可

Window {id: root// 窗口创建时触发                                      Component.onCompleted: {                        root.x = 200                              root.y = 200                              root.color = "green"                        console.log("onCompleted", width, height)   }// 窗口销毁时触发                                      Component.onDestruction: {                      console.log("onDestruction")                }  
}                                       

窗口创建销毁前都会去执行相应方法

下面是使用Component加载一个 Rectangle

Component {                                                  id: com                                                  Rectangle {                                              id: rect                                             width: 200                                           height: 100                                          color: "red"                                             }                                                                                                             
}                                                        

如果直接这样写上去,程序运行后,是不会在窗口中有加载Rectangle出来的,需要使用Loader 去动态加载才行

Loader {                              id: loader                        sourceComponent: com    // 加载id为 com 的组件                               
}                                     

在Loader中有一个status状态可以用于判断窗口处于哪个阶段;

填写上 onStatusChanged: { } 槽函数,在status状态发生改变时,此槽函数回立即触发;

status 一共有四种状态:

Loader.Null - 未加载 - 0
Loader.Ready - 已加载 - 1
Loader.Loading - 加载中 - 2
Loader.Error - 加载错误 - 3

可以在槽函数中,根据这些状态去做某些相应的操作:

Loader {                                 id: loader   // 异步加载部件,当这个部件很大时,例如加载很大的图片,或者加载很大的数据,为了不卡死界面,需要使用异步加载  asynchronous: true                                     sourceComponent: com                 onStatusChanged: {                   console.log("status:", status)   if (2 == status) {               // 处理一些操作                    console.log("加载中...")        } else if (1 == status){         // 处理以下操作                    console.log("加载完毕.")         }                                }                                    
}                                    

需要注意的是,加载中,需要在异步加载窗口的时候才会体现出来,即属性 asynchronous: true

当然,也可以在被加载的Rectangle部件中,写上Component.onCompleted: { } 和 Component.onDestruction: { } 

这样当Rectangle被成功加载后,或者被关闭后都会触发槽函数;

Rectangle {                                               id: rect                                              width: 200                                            height: 100                                           color: "red"                                          // 窗口创建时触发                                            Component.onCompleted: {                              console.log("onCompleted", width, height)         }                                                     // 窗口销毁时触发                                            Component.onDestruction: {                            console.log("onDestruction")                      }                                                     
}                                                       

那么,如何动态的去加载呢?

为了模仿这些场景,我们定义两个按钮,一个用于加载,一个用于关闭;

Button {                                    x: 250                                  text: "关闭"                              onClicked: {                                                                       loader.sourceComponent = null                                         }                                       
}                                           Button {                                    x: 250                                  y: 100                                  text: "显示"                              onClicked: {                                                                        loader.sourceComponent = com        }                                       
}                                            

将sourceComponent 赋值null即可将窗口隐藏,将sourceComponent 赋值Component的id即可加载显示;

现在将Loader中的sourceComponent置null;

Loader {                                 id: loader                                                                                                                                 sourceComponent: null......
}

当Rectangle被加载出来后,我们还能不能再修改他呢?

答案是可以的!

需要使用到loader.item属性;查看帮助文档介绍:

此属性保存当前加载的顶级对象。

那么也就是说,loader.item 也就相当于rect;即Rectangle的id;

新加第三个按钮,用于测试:

Button {                             x: 250                           y: 200                           text: "修改属性"                     onClicked: {                     loader.item.width = 50       loader.item.height = 50      loader.item.color = "green"  }                                
}

另外 Loader的source属性可以加载自己编写的qml文件

Loader {id: loadersource: "/MyRectangle.qml"
}

最后是代码分享:

import QtQuick 2.9
import QtQuick.Window 2.2import QtQuick.Controls 2.2Window {id: rootvisible: truewidth: 640height: 480title: qsTr("Hello World")color: "white"minimumWidth: 300minimumHeight: 400maximumHeight: 500maximumWidth: 400// 透明度//opacity: 0.5// 窗口创建时触发
//    Component.onCompleted: {
//        root.x = 200
//        root.y = 200
//        root.color = "green"
//        console.log("onCompleted", width, height)
//    }//    // 窗口销毁时触发
//    Component.onDestruction: {
//        console.log("onDestruction")
//    }// Component 可以加载任何部件,然后可以使用 Loader 去动态加载,然后也可以再动态销毁掉Component {id: comRectangle {id: rectwidth: 200height: 100color: "red"// 窗口创建时触发Component.onCompleted: {console.log("onCompleted", width, height)}// 窗口销毁时触发Component.onDestruction: {console.log("onDestruction")}}// Component 内部如果需要添加多个部件,需要使用Item包裹着
//        Item {
//            id: item_id
//            Rectangle {
//                id: rect1
//                width: 60
//                height:60
//                color: "yellow"
//            }
//            Button {
//                id: btn
//                y:100
//                text: "测试按钮"
//            }
//            Image { }
//        }}Loader {id: loader// 异步加载部件,当这个部件很大时,例如加载很大的图片,或者加载很大的数据,为了不卡死界面,需要使用异步加载asynchronous: true//source: "/MyRectangle.qml"sourceComponent: comonStatusChanged: {console.log("status:", status)// 加载中if (2 == status) {// 处理一些操作console.log("加载中...")} else if (1 == status){// 处理以下操作console.log("加载完毕.")}}}Button {x: 250text: "关闭"onClicked: {loader.sourceComponent = null}}Button {x: 250y: 100text: "显示"onClicked: {loader.sourceComponent = com}}Button {x: 250y: 200text: "修改属性"onClicked: {loader.item.width = 50loader.item.height = 50loader.item.color = "green"}}
}

 

完! 


文章转载自:

http://xqaE8UWP.ckwxs.cn
http://YTGckAUo.ckwxs.cn
http://LMKDF6DB.ckwxs.cn
http://Ixiw42v8.ckwxs.cn
http://n07nC3ss.ckwxs.cn
http://WhdZfbWX.ckwxs.cn
http://k8gWyiTo.ckwxs.cn
http://1fTayhqc.ckwxs.cn
http://L1SpzhaV.ckwxs.cn
http://WKs5JrOI.ckwxs.cn
http://9foMklFI.ckwxs.cn
http://SH62vw3V.ckwxs.cn
http://CVuC4zNQ.ckwxs.cn
http://Yc8eSRam.ckwxs.cn
http://xghgH8hJ.ckwxs.cn
http://khFDQFim.ckwxs.cn
http://9yTpbA2p.ckwxs.cn
http://y7kEfw70.ckwxs.cn
http://u5BbM2uC.ckwxs.cn
http://RzYsOPck.ckwxs.cn
http://vCZImkZa.ckwxs.cn
http://JyXjz3Zq.ckwxs.cn
http://ONdYn2sR.ckwxs.cn
http://aHS2uBVE.ckwxs.cn
http://106Eg76Y.ckwxs.cn
http://4cYDPC07.ckwxs.cn
http://MNXwJU9x.ckwxs.cn
http://Wj3feXKy.ckwxs.cn
http://ta4Ksqak.ckwxs.cn
http://ME5SUwxz.ckwxs.cn
http://www.dtcms.com/wzjs/741605.html

相关文章:

  • 网站统计如何做如何为网站添加谷歌分析工具
  • 动态海报网站免费做漫画网站
  • 代做淘宝客网站广州高端网站设计公司排名
  • 常熟做公司网站个人主页源码下载
  • 网站开发职业前景评估网站建设化妆品的目录
  • 全国交通建设网官方网站磁力搜索
  • 网站统计开放平台世界工厂网怎么拿货
  • 做网站的合同范文百度推广的四种收费形式
  • 青岛网站设计公司排名商城网站建设分为几块
  • 餐饮类网站设计WordPress怎么改文章颜色
  • 网站上海备案查询wordpress弹穿登陆
  • 个人备案网站建设方案书wordpress盗版
  • 网站域名怎么取专门做旅游的视频网站
  • 网站做动态图片不显示网站开发前台代码和后台代码
  • 设计网站公司名称图片库
  • 营销型网站建设市场什么是网站的推广
  • 石家庄做外贸网站建设昆明君创网络科技有限公司
  • 可以发锚文本的网站站酷网页设计分析
  • 怎样做软件网站建设学校招生网络营销方案
  • 贵阳手机网站开发福州网站怎么做的
  • 做教育的网站有哪些网站开发实验报告三
  • 自助式建网站app开发公司资质
  • 提升网站性能河南省新闻出版培训中心
  • 首饰设计网站大全一个网站多个子域名优化
  • 砍价网站怎么建设led外贸网站建设
  • 如何制作电脑公司网站网站开发项目经理职责
  • 怎么在文档中做网站一点就开网站左悬浮代码
  • 福鼎市建设局网站05网课时作业本
  • 茶网站建设方案wordpress 显示微信二维码
  • 京东网站的建设与发展现状wordpress 中文插件