qml 一些知识点
1、pagestack进行页面调整的时候,需要对页面状态做一些跟踪:
Stack.onStatusChanged: {
if (Stack.status == Stack.Active) { //可以判断是否跳转完成
isPageReady = true
} else if (Stack.status == Stack.Inactive) {
isPageReady = false
}
}
2、qml中信号的使用
A.qml 中有一个函数实现
//选择案件后的回调事件
function setCaseInfo(name,legalid){
var info = {};
info.name = name;
info.legalid = legalid;
caseText.text = name;
downloadRec.caseId = legalid;
var result = Storage.insert("caseinfo",JSON.stringify(info));
}
动态创建一个页面B并获取返回值:
MouseArea{
id : caseArea
anchors.fill: parent
onClicked: {
var content = Case.createElement("../caseStudy/AddCaseWin.qml",null);
content.caseselected.connect(setCaseInfo);
}
}
B页面有一个信号
signal caseselected(string name,int caseid)
B页面调用C组件:
ListView{
anchors.fill: parent
spacing: 25*screen.scale
clip: true
delegate: AddCaseItem{}
model:caseListModel
orientation:ListView.Horizontal
}
C组件则实现具体的参数透传:
MouseArea{
anchors.fill: parent
onClicked: {
caseselected(desction,legalid);
closeWin();
}
}
。
3.设置内部元素
default property alias contents: contents.data
Item {
id: contents
width: flickable.width
height: autoFlick ? childrenRect.height : flickable.height
}
根据官方的意思:
data是默认属性,相当于子控件。childrenRect是用来访问子元素的宽高等信息
4.遍历指定类型的元素:
function getFlickableChild(item) {
if (item && item.hasOwnProperty("children")) {
for (var i=0; i < item.children.length; i++) {
var child = item.children[i];
if (internal.isVerticalFlickable(child)) {
if (child.anchors.top === page.top || child.anchors.fill === page) {
return item.children[i];
}
}
}
}
return null;
}
如何构建qml的模版:
They use default property alias ... to alias the child items to any property of any item. If you don't want to alias the children but give the alias property a name, just remove default. (Literal children are per QML definition the value of the default property.)
Item {
id: button
default property alias contents: placeholder.children
anchors.fill: parent
Rectangle {
anchors.fill: parent
radius: 10
color: "gray"
Item {
id: placeholder <-- where the placeholder should be inserted
}
}
}
一个更具体的例子:
Dialog {
id: actionableDialog
title: "Change Text"
hasActions: true
TextField {
id: optionText
text: currentText
width: parent.width
placeholderText: "New Option to Confirm"
}
onAccepted: {
currentText = optionText.text
}
}
Dialog.qml
PopupBase {
id: dialog
overlayLayer: "dialogOverlayLayer"
overlayColor: Qt.rgba(0, 0, 0, 0.3)
opacity: showing ? 1 : 0
visible: opacity > 0
width: Math.max(minimumWidth,
content.contentWidth + 2 * contentMargins)
height: Math.min(units.dp(350),
headerView.height + units.dp(32) +
content.contentHeight +
content.topMargin +
content.bottomMargin +
buttonContainer.height)
property int contentMargins: units.dp(16)
property int minimumWidth: units.dp(270)
property alias title: titleLabel.text
property alias text: textLabel.text
/*!
\qmlproperty Button negativeButton
The negative button, displayed as the leftmost button on the right of the dialog buttons.
This is usually used to dismiss the dialog.
*/
property alias negativeButton: negativeButton
/*!
\qmlproperty Button primaryButton
The primary button, displayed as the rightmost button in the dialog buttons row. This is
usually used to accept the dialog's action.
*/
property alias positiveButton: positiveButton
property string negativeButtonText: "Cancel"
property string positiveButtonText: "Ok"
property alias positiveButtonEnabled: positiveButton.enabled
property bool hasActions: true
default property alias dialogContent: column.data
Flickable {
id: content
contentWidth: column.implicitWidth
contentHeight: column.height
clip: true
anchors {
left: parent.left
right: parent.right
top: headerView.bottom
topMargin: units.dp(8)
bottomMargin: units.dp(-8)
bottom: buttonContainer.top
}
interactive: contentHeight + units.dp(8) > height
bottomMargin: hasActions ? 0 : units.dp(8)
Rectangle {
Column {
id: column
anchors {
left: parent.left
margins: contentMargins
}
width: content.width - 2 * contentMargins
spacing: units.dp(16)
}
}
}
}
qml 一些知识点的更多相关文章
- QML学习(一)——<简要概念知识点>
转载:https://www.cnblogs.com/dengyg0710/p/10644936.html 1.一个 QML 文档有且只有一个根元素. 2.QML 元素名后所有内容使用 {} 包围起来 ...
- qml: QtChart横纵轴label设置;
在qml中,使用ChartView作为图表展示区域, 但是并没有给定接口用来设置xlabel,ylabel. 没得办法,只能采用笨方案: (我的方法如下) import QtQuick 2.0 imp ...
- ASP.NET Core 中的那些认证中间件及一些重要知识点
前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...
- ASP.NET MVC开发:Web项目开发必备知识点
最近加班加点完成一个Web项目,使用Asp.net MVC开发.很久以前接触的Asp.net开发还是Aspx形式,什么Razor引擎,什么MVC还是这次开发才明白,可以算是新手. 对新手而言,那进行A ...
- UWP开发必备以及常用知识点总结
一直在学UWP,一直在写Code,自己到达了什么水平?还有多少东西需要学习才能独挡一面?我想对刚接触UWP的开发者都有这种困惑,偶尔停下来总结分析一下还是很有收获的! 以下内容是自己开发中经常遇到的一 ...
- C#高级知识点&(ABP框架理论学习高级篇)——白金版
前言摘要 很早以前就有要写ABP高级系列教程的计划了,但是迟迟到现在这个高级理论系列才和大家见面.其实这篇博客很早就着手写了,只是楼主一直写写停停.看看下图,就知道这篇博客的生产日期了,谁知它的出厂日 ...
- lucene 基础知识点
部分知识点的梳理,参考<lucene实战>及网络资料 1.基本概念 lucence 可以认为分为两大组件: 1)索引组件 a.内容获取:即将原始的内容材料,可以是数据库.网站(爬虫).文本 ...
- DoraCMS 源码知识点备注
项目需要研究了下DoraCMS这款开源CMS,真心做的不错:).用的框架是常用的express 4 + mongoose,代码也很规范,值得学习. 源码中一些涉及到的小知识点备注下: https:// ...
- atitit 商业项目常用模块技术知识点 v3 qc29
atitit 商业项目常用模块技术知识点 v3 qc29 条码二维码barcodebarcode 条码二维码qrcodeqrcode 条码二维码dm码生成与识别 条码二维码pdf147码 条码二维码z ...
随机推荐
- 新知识Tom大叔
http://www.cnblogs.com/TomXu/archive/2011/12/15/2284752.html http://www.cnblogs.com/TomXu/archive/20 ...
- Spring 读书笔记-----使用Spring容器(一)
pring有两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口.他们都可代表Spring容器,Spri ...
- CentOS6.4_x86_开关机查看
1. 有时候,开机进系统的时候,就会卡在哪里,进不去系统.查看开机时 是哪个东西卡在哪里: 开机,显示进度条的时候,按 F4,就可以看到加载的具体情况了. 2. 关机的时候,有时候关闭了机: 用 CT ...
- Oracle 逐条和批量插入数据方式对比
创建测试表 create table base_users ( userid varchar2(16), username varchar2(32), passwd var ...
- linux中脚本的一些小知识的积累
对于变量的问题: 对变量赋值,a="hello world",现在打印变量a的内容:echo $a. 对于${}的使用:如$aall,我们想要$a,这是,就可以${a}all了. ...
- Java源码初学_HashSet&LinkedHashSet
一.概述 HashSet是建立在HashMap的基础上的,其内部存在指向一个HashMap对象的引用,操作HashSet实际上就是操作HashMap,而HashMap中所有键的值都指向一个叫做Dumm ...
- HBase分享会议笔记
今天参加了一个关于HBase的分享,有一些内容是之前的知识的补充. 之前关于Hadoop家族,包括HBase的内容,可以参考:http://www.cnblogs.com/charlesblc/p/6 ...
- Delphi 过程与函数
注:该内容整理自以下链接. http://chanlei001.blog.163.com/blog/static/340306642011111615445266/ delphi 过程以保留字proc ...
- 设置TextView下划线并响应点击事件(SpannableString)
下面是一个20行的完整Demo代码:基本原理是使用一个SpannableString并设置其ClickableSpan来响应点击事件. TextView useInfo = (TextView) fi ...
- Java用webSocket实现tomcat的日志实时输出到web页面
原文:http://blog.csdn.net/smile326/article/details/52218264 1.场景需求 后台攻城狮和前端攻城狮一起开发时,经常受到前端攻城狮的骚扰,动不动就来 ...