自定义运行时示例

演示了如何创建自定义 QML Live 运行时。

Screenshot of the Custom QML Live Runtime

利用 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)

文件

图像

©2019 瑞典 Luxoft AB。本文档中的文档贡献是各自所有者的版权。提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款授权的。Qt 和相应的标志是 The Qt Company Ltd. 在芬兰和/或其他国家的商标。所有其他商标都是其各自所有者的财产。