:이 기능이 작동하지 않을 수 있으므로 즉시 반환하고, 그문서를 오해했거나 Qt.createQmlObject (거의 쓸모가 있습니까?)입니까? <a href="http://doc.qt.io/qt-5/qml-qtqml-qt.html#createQmlObject-method" rel="nofollow noreferrer">the Qt docs</a>에서
참고 QML 문자열을로드하면 새로운 구성 요소 (즉, 아직로드되지 않은 외부 QML 파일입니다). 이 경우 Qt.createComponent()를 대신 사용해보십시오.
그러나
은 내가 아는 한, 모든 QML 파일은 "외부"이며, 그 중 하나는 부하 임의로 긴 지연 수 있습니다.예. 내가 이렇게하면 :
Qt.createQmlObject('\
import QtQuick 2.0\n\
Rectangle { }
',
parentObject,
"myRect");
이 코드를 실행할 때까지 Rectangle이로드되지 않으면 어떻게됩니까? 이 논리에 따라 전달 된 문자열에 Qt.createQmlObject
을 사용하는 코드는 위험합니다. 따라서 항상 Qt.createComponent
을 사용해야합니다.
나는이 문서들을 오해하고 있다고 확신하지만, 나는 그들에 대한 올바른 해석이 무엇인지 알지 못한다.
'createComponent()'가 다르다. 메모리 내 문자열에서 작동하지 않는다. 외부 파일에 대한 URI가 필요하다. 여기 비동기 적재가 허용되며, 동기화와 비동기 중 하나를 선택할 수 있습니다. – dtech
@ddriver : 나는 그것을 깨달았다. 내가 말하고있는 것은'Qt.createComponent'는'Qt.createQmlObject'를 대체 할 수있는 것이지, 메모리 내 문자열 대신 uri에서 외부 파일로로드됩니다. 그리고'Qt.createQmlObject'에있는 것처럼 보이는 치명적인 문제는 없습니다. –
테스트하지는 못했지만 createQmlObject는 파일을 로컬에서 사용할 수 있고 모듈이 가져 오기 경로에있는 한 괜찮을 것으로 생각됩니다. 생성 된 코드에 의존하는 경우 문자열을 파일로 저장하고 createComponent를 안전한 측면에서만 사용하십시오. – dtech