
여기에 뭔가 빠졌을 수도 있지만 페이지 2가 로드되기 전에 코드가 실행되는 이유가 확실하지 않습니다.
http://pastebin.ubuntu.com/8068379/
그리고 버튼을 누르기 전에 2페이지의 기능과 코드가 실행되지 않도록 하는 방법이 있나요?
답변1
Component.onCompleted
인터프리터가 QML 파일을 읽고 객체로 구문 분석하는 즉시 실행됩니다. 이때 "페이지 2" 개체가 생성되었지만 visible: false
볼 수는 없습니다. 이는 코드 실행을 방해하지 않습니다 onCompleted
.
나는 페이지가 스택에 푸시될 때만 코드가 실행되도록 하는 세 가지 방법을 알고 있습니다.
pageStack.push()
실행하려는 다른 코드를 호출하고 트리거하는 사용자 정의 함수를 만듭니다 .onCompleted
페이지 2의 처리기 에서 처리기로 코드를 이동합니다onVisibleChanged
. 페이지가 스택에서 푸시되거나 팝될 때 모두 호출됩니다.visible
무슨 일이 일어나고 있는지 알려주는 값을 확인하십시오 .페이지 2 개체를 "page2.qml"이라는 별도의 파일로 이동하고 푸시 호출을
pageStack.push(Qt.resolvedUrl("page2.qml"))
. 그러면 스택에 푸시될 때마다 새로운 2페이지 개체가 생성됩니다. 이것은 당신이 원하는 것일 수도 있고 아닐 수도 있습니다.
이 세 가지 모두 페이지 2가 스택에 푸시될 때마다 코드를 호출합니다. 처음에만 호출되도록 하려면 직접 추적해야 합니다. 객체 생성이 pageStack과 상호 작용하는 방법에 대한 자세한 내용은 다음을 확인하세요.이 답변.