我有以下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++
代码是一个将在其他项目中使用的库。
答案 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。