QML에서 첫 문자를 대문자로 사용하여 파일을 만들면 구성 요소가 생성됩니다. 구성 요소는 OOP 집계 (하위 클래스 화 없음)를 사용하여 구현됩니다. 내가
// MyButton.qml
import QtQuick 2.0;
Rectangle {
id: base;
width: 120;
height: 40;
color: "lightgray";
Text {
text: "foobar";
anchors.centerIn: parent;
}
}
를 작성하는 경우 그 말은 ... 난, 난 그냥 루트 객체로 사각형을 포함하고, 어떤 방법으로 그것을 configurates 구성 요소를 만들어 그 안에 텍스트 객체를 추가 사각형을 서브 클래스하지 않은 . 구성 요소가 생성 될 때
은 즉시, 간단하게 작성하여 통해 인스턴스 할 수 있습니다 그게 QML에서 작동하는 방법
MyComponent { id: myNewInstance; }
때문입니다.
컴포넌트 이름 (그러나 C++ 또는 JS의 방법을 정의하는) 클래스의 일종이며 또한 속성의 타입으로서 사용될 수있다 : 다음
property MyComponent theComponent : myNewInstance;
가 저장할 수 주어진 컴포넌트로 생성 된 객체의 ID로, C/C++ 포인터처럼 약간 작용합니다 :이 속성은 실제 객체에 대한 링크를 보유합니다.
:
하지만 그것 때문에 내 경우에는 하위 클래스보다 더 많은 집계, 또한 파생 구성 요소의 ID를 보유 할 수있는 사용자 지정 구성 요소의 루트 객체의 type의 속성, 경우에도 QML가 디자인 된 방법의
property Rectangle theComponent : myNewInstance;
이미지 나 텍스트 또는 다른 ID를 넣으려고하면 QML 엔진이 호환되지 않는 유형 오류를 발생시킵니다.
도움이되기를 바랍니다.
왜이 C++에 태그를 추가 했습니까? –
그래, 나는 그것을 삭제할 수 있지만, 객체 지향 언어에 태그를 붙이면이 질문에 더 많은 반응을 줄 것이라고 생각했다. – Mahesh
@Maheshthere는 대신에 사용할 수있는'oop' 태그입니다. –