用另一个替换QML文件内容

时间:2016-02-12 09:58:38

标签: c++ qt qml

我有以下main.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 个答案:

答案 0 :(得分: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。