自定义运行时示例
演示了如何创建自定义 QML Live 运行时。
利用 QML Live 功能创建自定义运行时可以让您使用您的 QML 视图设置,结合额外的 C++ 代码和 QML Live 系统。
从 LiveNodeEngine 类开始。我们需要修改此类以能够接收工作区更改和活动文档更新。默认情况下,IPC 监听端口 49156。
下面的代码片段展示了最简单的自定义 QML Live 运行时
#include <QtGui> #include <QtQuick> // Use QML Live headers #include "livenodeengine.h" #include "remotereceiver.h" #include "constants.h" class MyQmlApplicationEngine : public QQmlApplicationEngine { Q_OBJECT public: MyQmlApplicationEngine(const QString &mainQml); // Perform some setup here QString mainQml() const; QQuickWindow *mainWindow(); QList<QQmlError> warnings() const; // ... }; int main(int argc, char **argv) { QGuiApplication app(argc, argv); MyQmlApplicationEngine engine(QStringLiteral("qml/customruntime-window.qml")); if (!qEnvironmentVariableIsSet("MY_APP_ENABLE_QMLLIVE")) return app.exec(); #if defined(QT_NO_DEBUG) qWarning() << "QML Live support was disabled at compile time"; #else LiveNodeEngine node; // Let QML Live know your runtime node.setQmlEngine(&engine); // Allow it to display QML components with non-QQuickWindow root object QQuickView fallbackView(&engine, 0); node.setFallbackView(&fallbackView); // Tell it where file updates should be stored relative to node.setWorkspace(app.applicationDirPath(), LiveNodeEngine::AllowUpdates | LiveNodeEngine::UpdatesAsOverlay); // Listen to IPC call from remote QML Live Bench RemoteReceiver receiver; receiver.registerNode(&node); receiver.listen(Constants::DEFAULT_PORT()); // Advanced use: let it know the initially loaded QML component (do this // only after registering to receiver!) node.usePreloadedDocument(engine.mainQml(), engine.mainWindow(), engine.warnings()); #endif return app.exec(); }
在支持 pkg-config
的平台上指定项目依赖项,请将以下行添加到您的项目文件中。这假设 QML Live 已安装到您的构建宿主上
CONFIG += link_pkgconfig PKGCONFIG += qmllive
如果您的系统不支持 pkg-config
,则要将所有文件直接编译到您的应用程序中,请通过将行添加到您的项目文件中来包含文件 $(QMLLIVEPROJECT)/src/src.pri
include(src.pri)
文件
- customruntime/customruntime.pro
- customruntime/main.cpp
- customruntime/qml/customruntime-item.qml
- customruntime/qml/customruntime-window.qml
图像
©2019 瑞典 Luxoft AB。本文档中的文档贡献是各自所有者的版权。提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款授权的。Qt 和相应的标志是 The Qt Company Ltd. 在芬兰和/或其他国家的商标。所有其他商标都是其各自所有者的财产。