gpt4 book ai didi

c++ - 如何在 Qt App 项目中创建 Qt Plugin 项目

转载 作者:太空宇宙 更新时间:2023-11-04 12:34:19 24 4
gpt4 key购买 nike

当我运行我的应用程序时,QtCreator 总是显示这样的错误

QQmlApplicationEngine failed to load component
qrc:/main.qml:3 module "SampleModules" is not installed

我试过了- 到处寻找解决方案- 将 qmldir 文件移动到应用程序项目或二进制文件夹- 更改插件- 以多种方式更新 .pro 文件(甚至添加到插件资源文件的链接)

我的完整源代码在这里,我把它放到了github上,让大家对我的代码有一个完整的了解,它只是一个快速示例。 https://github.com/chaunnt/QtWithQMLPluginProjects

这里有一些细节我的项目.pro

TEMPLATE = subdirs

SUBDIRS += \
SampleModules \
SampleApp


SampleApp.depends = SampleModules

我的模块.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

最佳答案

我自己修好了。将此行添加到 main.cpp

engine.addImportPath("..");

根本原因是因为 SampleApp 二进制文件在输出目录中找不到 QML 的文件夹。

正在搜索文件夹

"Output/SampleApp/SampleModule"

但是我们输出的项目是

"Output/SampleApp"
"Output/SampleModule"

注意:在 QtCreator 的 Build & Run 环境变量中添加环境变量 QML_IMPORT_TRACE = 1 以获取加载了哪些插件以及发生了什么错误。

我也在我的github上推送了模板项目的修复补丁

关于c++ - 如何在 Qt App 项目中创建 Qt Plugin 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57092615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com