2015-11-08 84 views
2

我有一個由子組件組成的Qml組件。所有東西都被加載(渲染)後,我想執行一些操作。 有沒有辦法找出何時加載所有組件?僅在根元素上使用Component.onCompleted事件是不夠的,因爲不保證孩子被加載。頁面呈現/加載所有組件時的事件

問候,

回答

2

您應該能夠使用的QQuickWindowafterSynchronizing()信號來實現這一目標:

import QtQuick 2.2 
import QtQuick.Controls 1.1 
import QtQuick.Layouts 1.1 

ApplicationWindow { 
    visible: true 
    width: 1280 
    height: 700 

    property bool initialised: false 

    onAfterSynchronizing: { 
     if (!initialised) { 
      print("initialising..."); 
      // stuff... 
      initialised = true; 
     } 
    } 
} 

優點:

  • 你免費得到它。

缺點:

  • 您只能使用它QQuickWindow衍生物。

另一種方法是使用Loader;特別是其loaded()信號:

Loader { 
    source: "MyComponent.qml" 
    onLoaded: { 
     // stuff... 
    } 
} 

優點:

  • 一個的人誰可能要維護你的代碼更加清晰的選擇。
  • 沒有Window的作品;可以在場景的「層次結構」中的任何級別使用它。

缺點:

  • 帶有一個小的開銷。如果構件經常在低級別構建(如按鈕),則可能需要分析構件是否對性能產生負面影響。如果沒有,這是微不足道的。
+0

謝謝。裝載機工作正常。 – Hyndrix

相關問題