2016-02-12 50 views
1

我有以下main.qml文件替換QML文件內容:由另一人

import QtQuick 2.3 
import QtQuick.Controls 1.2 

ApplicationWindow 
{ 
    visible: true 
    width: 640 
    height: 480 

    Button 
    { 
     text: "Button" 
     onClicked: qml_file_loader.loadFile("help.qml"); 
    } 
} 

當單擊該按鈕時,我想注入help.qml文件的內容。什麼我目前做的是打開另一個窗口,通過加載與下面的代碼文件中loadFile(const QString)

void QMLFileLoader::loadFile(const QString page) 
{ 
    m_view.setSource(QUrl::fromLocalFile(page)); 
    m_view.show(); 
} 

我需要以取代目前QML文件?

所有這一切的目的是將UI從將處理數據更新QML文件的邏輯中分離出來。代碼C++是一個將在其他項目中使用的庫。

回答

1

QML Loader item你在找什麼?

您可以使用Loader作爲視圖中的內容項目並使用它來加載不同的文件。
您甚至可以輕鬆接收來自裝入物品的信號等等......

有關更多詳細信息,請參閱上述文檔。

從下面的文檔採取小例子:

import QtQuick 2.0 

Item { 
    width: 200; 
    height: 200 

    Loader { id: pageLoader } 

    MouseArea { 
     anchors.fill: parent 
     onClicked: pageLoader.source = "Page1.qml" 
    } 
} 

要在應用程序窗口中使用它是很容易的確實。
正如您所提到的,您的邏輯可以簡單地更新pageLoader.source屬性以更新UI。

+0

這似乎是實現我的邏輯最實際的方法。 –