Qt qml支持面向对象编程吗 我使用QML来做我的项目,我想知道我是否在另一个文件中实例化一个文件,它是否像C++类的实例化对象?
File.qmlQt qml支持面向对象编程吗 我使用QML来做我的项目,我想知道我是否在另一个文件中实例化一个文件,它是否像C++类的实例化对象?,qt,oop,qml,qtquick2,Qt,Oop,Qml,Qtquick2,File.qml Rectangle { id: idRect1 . . } File2.qml Rectangle { id: idRect2 File1 { id:idFile1 . . } } 在File2.qml中,我初始化了File1,这是否意味着我创建了File1类型的对象?请分享一些关于所有这些机制如何工作的知识(链接)。提前感谢在QML中创建首字母大写的文件时,您正在创建一个组件。组件是使用OOP聚合(而不是子类化)实现的。这
Rectangle {
id: idRect1
.
.
}
File2.qml
Rectangle {
id: idRect2
File1 {
id:idFile1
.
.
}
}
在File2.qml中,我初始化了File1,这是否意味着我创建了File1类型的对象?请分享一些关于所有这些机制如何工作的知识(链接)。提前感谢在QML中创建首字母大写的文件时,您正在创建一个组件。组件是使用OOP聚合(而不是子类化)实现的。这意味着如果我写
// MyButton.qml
import QtQuick 2.0;
Rectangle {
id: base;
width: 120;
height: 40;
color: "lightgray";
Text {
text: "foobar";
anchors.centerIn: parent;
}
}
。。。我没有将矩形子类化,我只是创建了一个组件,其中包含一个矩形作为根对象,并以某种方式对其进行配置,然后在其中添加一个文本对象
组件一经创建,就可以通过简单地编写以下内容来实例化:
MyComponent { id: myNewInstance; }
因为这是QML中的一种工作方式
组件名称是一类(但不是在C++或JS方式中定义),它也可以用作属性的类型:
property MyComponent theComponent : myNewInstance;
然后,它可以保存使用给定组件创建的对象的ID,有点像C/C++指针:该属性保存指向实际对象的链接
但由于QML的设计方式,即使它更多的是聚合而不是子类化,自定义组件的根对象类型的属性也可以保存派生组件的ID,在我的例子中:
property Rectangle theComponent : myNewInstance;
将工作,但如果我尝试放置图像、文本或其他内容的ID,QML引擎将抛出不兼容类型错误
我希望它能帮助你。< /p>为什么你贴上了这个C++?是的,我可以删除它,但是我认为标记一个面向对象的语言会对这个问题有更多的回应。@ MAHESHE有一个<代码> OOP 标签,它可以一直被使用。是的,你是对的。