2016-08-17 5 views
1

Я пытаюсь добавить 3D-возможности в существующее приложение Qt. В моем project.pro файле я установить переменную QT:модуль «Qt3D.Core» не установлен

TEMPLATE = subdirs 
QT += 3dcore 3drender 3dinput 3dquick qml quick 3dquickextras 
SUBDIRS = plugins/datasource \ 
      plugins/screenManager 

qml.files = apps modules sysui i18n am-config.yaml Main*.qml 
INSTALLS += qml 

Edit: я установить переменные окружения QML_IMPORT_TRACE1. Теперь я вижу следующее, когда я пытаюсь запустить приложение:

[DBG | default] QQmlImportDatabase::addImportPath: "/usr/lib/x86_64-linux-gnu/qt5/qml"                 [:0] 
[DBG | default] QQmlImportDatabase::addImportPath: "/usr/local/Qt-5.7.0/include"                   [:0] 
[DBG | default] QQmlImportDatabase::addImportPath: "/usr/local/bin"  [:0] 
[DBG | default] QQmlImportDatabase::setImportPathList: ("/usr/local/bin", "/usr/local/Qt-5.7.0/include", "/usr/lib/x86_64-linux-gnu/qt5/qml", "/home/aras/Projects/UI/imports/shared", "/home/aras/Projects/UI/imports/system") [:0] 
[CRIT | am.system] WARNING: could not register service org.freedesktop.Notifications on D-Bus (unix:abstract=/tmp/dbus-c9i1pNpEVT):      [:0] 
[DBG | default] QQmlImports(file:///home/aras/Projects/UI/Main.qml)::addLibraryImport: "QtQuick" 2.5 as "QQ2"          [:0] 
[DBG | default] QQmlImports(file:///home/aras/Projects/UI/Main.qml)::importExtension: loaded "/usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick.2/qmldir" [:0] 
[DBG | default] QQmlImportDatabase::registerPluginTypes: "QtQuick" from "/usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick.2"          [:0] 
[DBG | default] QQmlImports(file:///home/aras/Projects/UI/Main.qml)::addLibraryImport: "QtQuick.Window" 2.2 as ""         [:0] 
[DBG | default] QQmlImports(file:///home/aras/Projects/UI/Main.qml)::importExtension: loaded "/usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Window.2/qmldir"                    [:0] 
[DBG | default] QQmlImportDatabase::registerPluginTypes: "QtQuick.Window" from "/usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Window.2"      [:0] 
[DBG | default] QQmlImports(file:///home/aras/Projects/UI/Main.qml)::addFileImport: "sysui" -1.-1 as ""            [:0] 
[DBG | default] QQmlImports(file:///home/aras/Projects/UI/Main.qml)::addLibraryImport: "controls" 1.0 as ""           [:0] 
[DBG | default] QQmlImports(file:///home/aras/Projects/UI/Main.qml)::importExtension: loaded "/home/aras/Projects/UI/imports/shared/controls/qmldir"                   [:0] 
[DBG | default] QQmlImports(file:///home/aras/Projects/UI/Main.qml)::addLibraryImport: "utils" 1.0 as ""            [:0] 
[DBG | default] QQmlImports(file:///home/aras/Projects/UI/Main.qml)::importExtension: loaded "/home/aras/Projects/UI/imports/shared/utils/qmldir"                    [:0] 
[WARN | default] QQmlApplicationEngine failed to load component   [:0] 
[WARN | default] file:///home/aras/Projects/UI/Main.qml:6 module "Qt3D.Core" is not installed 
                      [:0] 
[CRIT | am.system] ERROR: Qml scene does not have a root object   [:0] 

Qt установлен в /usr/local/Qt-5.7.0:

$ which qml 
/usr/local/Qt-5.7.0/bin//qml 
[email protected]:~$ which qmake 
/usr/local/Qt-5.7.0/bin//qmake 

Внутри моей .qml файл я пытаюсь импортировать 3D библиотеки мне нужно:

import Qt3D.Core 2.0 
import Qt3D.Render 2.0 

Тем не менее, когда я пытаюсь запустить свое приложение, я получаю следующие ошибки:

...module "Qt3D.Render" is not installed 
...module "Qt3D.Core" is not installed 

Я думал, что это все, что мне нужно. Что мне здесь не хватает?

+1

«Я установил $ QML2_IMPORT_PATH в каталог include внутри моей установки Qt», это определенно неправильно - пути импорта QML не имеют ничего общего с C++. Более того, вы не должны устанавливать эту переменную env, чтобы найти импорт QML, поставляемый с Qt. Так что просто оставьте его незаметным. – peppe

+0

Спасибо за разъяснение. Можете ли вы рассказать мне, как и где я должен установить эту переменную? Это в файле 'project.pro'? Несколько документов относятся к этой переменной, но не говорят, как ее установить. – Aras

+1

Это переменная среды, поэтому вы устанавливаете ее при запуске своего исполняемого файла. Если вы используете Creator, на панели Project (слева), запустите настройки для данного набора (вверху) и измените там окружение. Но все дело в том, что * вам не нужно устанавливать его * для модулей, входящих в Qt. Если эти модули установлены, но не найдены, установите вместо переменной среды QML_IMPORT_TRACE значение 1 и убедитесь, что они действительно найдены. – peppe

ответ

1

У меня есть 3D, работающий в моем приложении Qt, проверяя последний исходный код с qt и создавая его. Затем, когда я столкнулся с недостающими проблемами модуля, я создаю соответствующий модуль. В случае 3D это то, что я сделал:

cd qt3d 
../qtbase/bin/qmake ../../qt5/qt3d 
make -j5 

Это предполагает создание исходной каталогов. Исходный код находится внутри каталога qt5. Надеюсь, это поможет кому-то.

Смежные вопросы