text: "add 1"
onClicked: {
var objc = { "x": 15, "y": 15, "imgsrc": "qrc:/tire_normal.png"};
addOrRemove(true, objc)
console.log("111")
Button {
text: "add 2"
onClicked: {
var objc = { "x": 100, "y": 100, "imgsrc": "qrc:/WarnDoorBg.png"};
addOrRemove(true, objc)
Button {
text: "remove 1"
onClicked: {
addOrRemove(false, null); //instances[0].destroy();
Rectangle{
id: rect
clip: true
color: "yellow"
width: 300
height: 300
function addOrRemove(add, objdata) {
if (add) {
var imgComponent = Qt.createComponent("qrc:/River.qml");
let instance = weirdShapeComponent.createObject(rect, objdata);
instances.push(instance);
} else {
let instance = instances.pop();
instance.destroy();
Components(组件)
Component 是由 Qt 框架或开发者封装好的、只暴露了必要接口的
QML
类型,可以重复利用。一个
QML
组件就像一个黑盒子,它通过属性、信号、函数和外部世界交互。
一个 Component 即可以定义在独立的
qml
文件中,也可以嵌入到其它的
qml
文档中来定义。通常我们可以根据这个原则来选择将一个 Component 定义在哪里:如果一...
1. 使用Component在
QML
中嵌入组件
Component是Qt框架或者开发者封装好的、只暴露必要接口的
QML
类型,可以重复使用。要再
QML
中嵌入Comp...
QML
支持在JavaScript中
动态
创建
对象。这有助于将对象的实例化推迟到必要的时候,从而提高应用程序的启动时间。它还允许
动态
创建
可视对象,并根据用户输入或其他事件将其添加到场景中。
动态
创建
用的场景是非常的多。有些组件在时间线上不是同时
创建
的,同时就像弹窗一样,有些组件其实是在运行的时候
创建
一会儿,就销毁掉了。
QML
不仅仅是一个UI描述语言,它还是一个完整的应用程序开发框架。与传统的UI开发工具相比,
QML
提供了更高的灵活性和
动态
性。例如,你可以在运行时更改界面的布局、样式和行为,而无需重新编译整个应用程序。
正如《C++编程思想》中所说:“一个好的工具不仅可以帮助你完成任务,还可以激发你的创造力。”
QML
正是这样一个工具,它鼓励开发者思考如何创造出更加人性化和高效的用户界面。
虽然
QML
的界面定义非常灵活,但是我们在开发应用的时候也是有固定套路的。下面介绍一下
QML
应用的几种固定模式,分别是:SwipeView、StackView、DocumentWindow。SwipeView窗口是一种可以通过鼠标或者手指左右滑动来实现窗口切换的视图结构,常见于移动端应用。StackView是一种堆叠层次的窗口结构,用户可以通过按键和菜单的响应操作,切换堆叠结构中的