Я использую Qt 5.5.1 в Ubuntu 18.04, я хочу визуализировать 3d-модель (в формате .obj) с qml в qquickwidget), я использую основание setSource для привязки файла qml к qquickwidget, мой файл qml закодирован следующим образом:
import Qt3D 2.0
import Qt3D.Renderer 2.0
import QtQuick 2.0
Entity {
id: root
Camera {
id: camera
projectionType: CameraLens.PerspectiveProjection
fieldOfView: 45
aspectRatio: _window.width / _window.height
nearPlane: 0.1
farPlane: 1000.0
position: Qt.vector3d(0.0, 10.0, 20.0)
viewCenter: Qt.vector3d(0.0, 0.0, 0.0)
upVector: Qt.vector3d(0.0, 1.0, 0.0)
}
property Material material
Mesh {
id: trefoilMesh
source: "../res/obj/model.obj"}
Transform {
id: j2Transform
...
}
}
но когда я бегу, я получаю некоторую ошибку:
QQuickWidget поддерживает только загрузку корневых объектов, производных от QQuickItem.
Если в вашем примере используется QML 2 (например, qmlscene) и файл .qml,
загруженный имеет ‘import QtQuick 1.0’ или ‘import Qt 4.7’, эта ошибка произойдет.
Чтобы загрузить файлы с помощью «import QtQuick 1.0» или «import Qt 4.7», используйте
Класс QDeclarativeView в модуле Qt Quick 1.
затем я обернул свое свойство Item в qml body чем-то вроде этого:
Item {
id: root
Entity {
id: sceneRoot
Camera {
id: camera
projectionType: CameraLens.PerspectiveProjection
fieldOfView: 45
aspectRatio: _window.width / _window.height
nearPlane: 0.1
farPlane: 1000.0
position: Qt.vector3d(0.0, 10.0, 20.0)
viewCenter: Qt.vector3d(0.0, 0.0, 0.0)
upVector: Qt.vector3d(0.0, 1.0, 0.0)
...
}
Затем я получаю еще одно предупреждение: ReferenceError: _window не определено, и я получил пустой вывод. И затем я использую Qt3D :: Quick :: QQmlAspectEngine и QWindow для рендеринга qml (без переноса свойства Item) в качестве примера qt, я не могу получить правильную модель в окне, поэтому я думаю, что мой файл qml в порядке. Но проблема в том, что я не могу использовать QWindow, мне нужно встроить 3D-рендеринг модели как часть моей программы (уже есть главное окно), кто-нибудь может мне помочь, как это сделать? Большое спасибо!
Задача ещё не решена.
Других решений пока нет …