导入QtQuick.Controls 2.0不起作用 - QQmlApplicationEngine无法加载组件

时间:2016-06-25 15:44:11

标签: qt qtquick2 qt-quick qtquickcontrols qtquickcontrols2

我有一个应用程序,其项目使用CMake中的Qt5.7生成, 所以当import QtQuick.Controls 2.0应用程序无法加载时出现以下错误:

  无法为模块加载

插件" QtQuick.Controls":无法加载   图书馆   C:\ Qt \ Qt5.7.0 \ 5.7 \ msvc2015 \ qml \ QtQuick \ Controls.2 \ qtquickcontrols2plugind.dll:找不到指定的模块。

的CMakeLists.txt

set(CMAKE_PREFIX_PATH "C:\\Qt\\Qt5.7.0\\5.7\\msvc2015")
set(CMAKE_AUTOMOC ON) 
set(CMAKE_AUTORCC ON) 
set(CMAKE_AUTOUIC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

find_package(Qt5Core REQUIRED)
find_package(Qt5Qml) 
find_package(Qt5Quick) 
find_package(Qt5QuickControls2)

...

add_executable(MyApp ${SRC} ${HEADER} ${RESOURCES})

target_link_libraries(MyApp
Qt5::WinMain    
Qt5::Core   
Qt5::Qml    
Qt5::Quick  
Qt5::QuickControls2     
)

visual studio输出中加载的DLL文件:

'MyApp.exe' (Win32): Loaded 'C:\Qt\Qt5.7.0\5.7\msvc2015\qml\QtQuick.2\qtquick2plugind.dll'. Symbols loaded.
'MyApp.exe' (Win32): Loaded 'C:\Qt\Qt5.7.0\5.7\msvc2015\qml\QtQuick\Controls.2\qtquickcontrols2plugind.dll'. Symbols loaded.
'MyApp.exe' (Win32): Unloaded 'C:\Qt\Qt5.7.0\5.7\msvc2015\qml\QtQuick\Controls.2\qtquickcontrols2plugind.dll'

3 个答案:

答案 0 :(得分:5)

我找到了解决方案,问题是QtQuick.Controls 2.0取决于QtQuick.Templates 2.0模块,因此我将其dll复制到输出目录并成功运行。

必需的DLL(用于Debug版本):

Qt5QuickTemplates2d.dll
Qt5QuickControls2d.dll

必需的DLL(适用于发行版):

Qt5QuickTemplates2.dll
Qt5QuickControls2.dll

答案 1 :(得分:1)

在Windows上,Qt提供了自动扫描所有Qt和QML依赖关系的部署工具:

%QTDIR%\bin\windeployqt.exe your_app.exe --qmldir your\qml\files

See the Qt documentation:

  

该工具可在QTDIR / bin / windeployqt中找到。它需要一个.exe文件   或包含.exe文件作为参数的目录,并进行扫描   依赖项的可执行文件。如果目录与。一起传递   --qmldir参数,windeployqt使用qmlimportscanner工具扫描目录中的QML文件以获取QML导入依赖项。鉴定   然后将依赖项复制到可执行文件的目录中。该   Qt5Core.dll中的硬编码本地路径进一步被替换为   相对的。

答案 2 :(得分:0)

如果您使用的是Ubunty,请尝试安装qml-module-qtquick-controls2

sudo apt install qml-module-qtquick-controls2