Qt Quick 3D - RuntimeLoader Example▲
Sélectionnez
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifdef HAS_MODULE_QT_WIDGETS
# include <QApplication>
#endif
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQuickWindow>
#include <QtQuick3D/qquick3d.h>
int
main(int
argc, char
*
argv[])
{
#ifdef HAS_MODULE_QT_WIDGETS
QApplication app(argc, argv);
#else
QGuiApplication app(argc, argv);
#endif
app.setOrganizationName("The Qt Company"
);
app.setOrganizationDomain("qt.io"
);
app.setApplicationName("Runtime Asset Loading Example"
);
const
auto
import
Url = argc > 1 ? QUrl::fromLocalFile(argv[1]) : QUrl{};
if
(import
Url.isValid())
qDebug() &
lt;&
lt; "Importing"
&
lt;&
lt; import
Url;
QSurfaceFormat::
setDefaultFormat(QQuick3D::
idealSurfaceFormat(4
));
QQmlApplicationEngine engine;
const
QUrl url(QStringLiteral("qrc:/main.qml"
));
engine.load(url);
if
(engine.rootObjects().isEmpty()) {
qWarning() &
lt;&
lt; "Could not find root object in"
&
lt;&
lt; url;
return
-
1
;
}
QObject *
topLevel =
engine.rootObjects().value(0
);
QQuickWindow *
window =
qobject_cast&
lt;QQuickWindow *&
gt;(topLevel);
if
(window)
window-&
gt;setProperty("importUrl"
, import
Url);
return
app.exec();
}