运行应用程序时,QtCreator总是显示这样的错误
QQmlApplicationEngine failed to load component
qrc:/main.qml:3 module "SampleModules" is not installed
我尝试过 -到处寻找解决方案 -将qmldir文件移动到应用程序项目或二进制文件夹 -更改插件 -通过多种方式更新.pro文件(甚至将链接添加到插件的资源文件中)
我的完整源代码在这里,我将其放置在github上,以供所有人查看我的代码的完整视图,只是一个快速示例。 https://github.com/chaunnt/QtWithQMLPluginProjects
这里有一些细节 我的project.pro
TEMPLATE = subdirs
SUBDIRS += \
SampleModules \
SampleApp
SampleApp.depends = SampleModules
我的module.pro
TEMPLATE = lib
TARGET = SampleModules
QT += qml quick
CONFIG += plugin c++11
TARGET = $$qtLibraryTarget($$TARGET)
uri = SampleModules
version = 1.0
# Input
SOURCES += samplemodules_plugin.cpp samplemodules.cpp
HEADERS += samplemodules_plugin.h samplemodules.h
DISTFILES = qmldir
!equals(_PRO_FILE_PWD_, $$OUT_PWD) {
copy_qmldir.target = $$OUT_PWD/qmldir
copy_qmldir.depends = $$_PRO_FILE_PWD_/qmldir
copy_qmldir.commands = $(COPY_FILE) "$$replace(copy_qmldir.depends, /, $$QMAKE_DIR_SEP)" "$$replace(copy_qmldir.target, /, $$QMAKE_DIR_SEP)"
QMAKE_EXTRA_TARGETS += copy_qmldir
PRE_TARGETDEPS += $$copy_qmldir.target
}
qmldir.files = qmldir
unix {
installPath = $$[QT_INSTALL_QML]/$$replace(uri, \., /)
qmldir.path = $$installPath
target.path = $$installPath
INSTALLS += target qmldir
}
我的app.pro
QT += quick
CONFIG += c++11
SOURCES += \
main.cpp
RESOURCES += qml.qrc
QML_IMPORT_PATH =
QML_DESIGNER_IMPORT_PATH =
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
我希望创建一个Qt插件项目,该项目可以为我的Qt App项目注册C ++,QML和Singleton QML。
我的qmldir文件
module SampleModules
plugin SampleModules
classname SampleModulesPlugin
typeinfo plugins.qmltypes
答案 0 :(得分:0)
我自己修复了。 将此行添加到main.cpp
engine.addImportPath("..");
根本原因是因为SampleApp二进制文件在输出目录中找不到QML文件夹。
正在搜索文件夹
"Output/SampleApp/SampleModule"
但是我们将项目输出为
"Output/SampleApp"
"Output/SampleModule"
注意:在QtCreator的“构建和运行”环境变量中添加环境变量QML_IMPORT_TRACE = 1,以获取加载了哪些插件以及出了什么问题。
我还在模板项目的github上推送了固定补丁