2014-07-21 2 views
0

QT를 사용하여 요소를 동적으로 만들려고하지만 작동하지 않으며 오류 메시지가 인쇄되지 않습니다. Compoenent.Status 결코 준비가되어 있지 않습니다. 심지어 Compoenet.Error 단계로 이동하지 않습니다 :(Qt가 구성 요소를 만들지 않고 오류를 반환하지 않습니다.

Component.onCompleted: { 
       var Component = Qt.createComponent("parts/Column.qml"); 
       console.log(Component.errorString()); 

Column.qml는 기본적으로 columnLayout도 요소가 포함되어 있습니다. 내가 잘못 뭐하는 거지?

+0

구성 요소가 예약 키워드가 아닙니까? 그 변수에 다른 이름을 붙이려고 했습니까? – MrEricSir

+0

@MrEricSir 질문을 작성하고 다른 변수를 시도했지만 여전히 작동하지 않는다는 것을 깨달았습니다. – HackToHell

답변

1

QML에서 동적 다단계 과정을 구성 요소입니다 만들기. .. Qt.createComponent()가 첫 번째 단계입니다 호출 documentation on this process 즉시 많은 간단한 경우

, 구성 요소로드 일부 내용이수록 당신은이 작업을 수행 할 수 있습니다

// Create our Component 
var myComponent = Qt.createComponent("foobar.qml"); 

// Instantiate the Component's object, give it a parent, and set its properties 
var foobar = myComponent.createObject(parentObject, {"x": 0, "y": 0}); 

그러나 더 복잡한 경우에는 구성 요소의 statusChanged 신호에 연결해야합니다. 이에 대한 전체 예제는 위의 문서에서 참조 용으로 여기에 복사하여 붙여 넣었습니다.

var component; 
var sprite; 

function createSpriteObjects() { 
    component = Qt.createComponent("Sprite.qml"); 
    if (component.status == Component.Ready) 
     finishCreation(); 
    else 
     component.statusChanged.connect(finishCreation); 
} 

function finishCreation() { 
    if (component.status == Component.Ready) { 
     sprite = component.createObject(appWindow, {"x": 100, "y": 100}); 
     if (sprite == null) { 
      // Error Handling 
      console.log("Error creating object"); 
     } 
    } else if (component.status == Component.Error) { 
     // Error Handling 
     console.log("Error loading component:", component.errorString()); 
    } 
} 
관련 문제