有没有人能够在使用时热重载所有 QML 文件ApplicationWindow
?我发现了一些示例,例如https://qml.guide/live-reloading-hot-reloading-qml/和https://www.slideshare.net/ICSinc/how-best-to-realize-a-runtime-reload -of-qml,但大多数情况下他们使用Loader
并且ApplicationWindow
需要作为根项目,这不起作用(没有出现窗口)只是重新加载所有 QML 内容。
我试过了:
ApplicationWindow {
id: window
visibility: "FullScreen"
Shortcut {
sequence: "F5"
context: Qt.ApplicationShortcut
onActivated: {
window.close();
app.loadQml();
}
}
...
}
我在 C++ 端设置的上下文属性在哪里app
,函数执行以下操作:
void App::loadQml()
{
qml_engine_.clearComponentCache();
// Use "qrc:/Main.qml" for Qt Resource System.
// Use "Main.qml" for file system.
qml_engine_.load(QUrl(QStringLiteral("Main.qml")));
}
这种代码工作一次,窗口消失并重新出现,但快捷方式只工作一次,但没有第二次......
任何想法如何实现这一点?