如何防止 PageStack 中的第二頁運作?

如何防止 PageStack 中的第二頁運作?

我可能在這裡遺漏了一些東西,但我不確定為什麼程式碼在第 2 頁應該加載之前運行。

http://pastebin.ubuntu.com/8068379/

有什麼方法可以阻止第 2 頁中的函數和程式碼在按下按鈕之前運行嗎?

答案1

Component.onCompleted解釋器讀取 QML 檔案並將其解析為物件後立即運行。此時您的「第 2 頁」物件已創建,但它已創建,visible: false因此您看不到它。這不會阻止onCompleted程式碼運行。

我知道三種方法可以讓程式碼僅在頁面被推入堆疊時運行:

  1. 建立一個自訂函數來呼叫pageStack.push()並觸發您想要運行的任何其他程式碼。

  2. 將程式碼從第 2 頁的onCompleted處理程序移至該onVisibleChanged處理程序。請注意,當頁面被壓入堆疊或從堆疊彈出時,都會呼叫此函數。檢查 的值visible來判斷發生了什麼事。

  3. 將第 2 頁物件移至一個單獨的檔案中,例如“page2.qml”,並將推送呼叫變更為pageStack.push(Qt.resolvedUrl("page2.qml")).每次將其推入堆疊時,都會建立一個新的第 2 頁物件;這可能是也可能不是您想要的。

請注意,每次將第 2 頁推送到堆疊時,所有這三個都會呼叫程式碼。如果您只想第一次呼叫它,則必須自己追蹤它。有關物件建立如何與 pageStack 互動的更多信息,請查看這個答案

相關內容