2016-08-17 81 views
1

我正在尝试将3D功能添加到我现有的Qt应用程序中。在我project.pro文件I设置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 

编辑:我的QML_IMPORT_TRACE环境变量设置为1。现在我明白了,当我尝试运行应用程序如下:

[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设置到我的Qt安装中的include目录中”,这肯定是错误的 - QML导入路径与C++包含无关。此外,你不应该设置该env变量,以查找随Qt提供的QML导入。所以,请将其解除。 – peppe

+0

感谢您澄清。你能告诉我如何以及在哪里设置这个变量吗?它在'project.pro'文件中吗?几个文档提到了这个变量,但没有说如何设置它。 – Aras

+1

这是一个环境变量,因此您在启动可执行文件时进行设置。如果您正在使用Creator,请在项目窗格(左侧)中运行给定套件(位于顶部)的设置,然后更改其中的环境。但总的来说,*你不需要为Qt自带的模块设置*。如果这些模块已安装但未找到,请将环境变量“QML_IMPORT_TRACE”设置为1并检查它们是否确实找到。 – peppe

回答

1

我通过检查qt的最新源代码并构建它,从而在我的qt应用程序中获得了3D工作。然后,当我遇到缺少的模块问题时,我构建了相应的模块。在3D的情况下,这是我所做的:

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

这是假设一个超出源目录构建。源代码在qt5目录内。希望这可以帮助某人。