【问题标题】:Install QChart.js qml module: module not found安装 QChart.js qml 模块:找不到模块
【发布时间】:2016-03-19 01:51:20
【问题描述】:

我正在努力使用 qml 模块: https://github.com/jwintz/qchart.js

根据documentation

  • 我已将文件放在 $PROJECT/qmlModules/jbQuick/Charts/* 中。
  • 在 .pro 文件中添加了 QML_IMPORT_PATH

    QML_IMPORT_PATH += ./qmlModules

  • 现在我正在尝试导入 jbQuick.Charts 1.0,

但是 QtCreator 显示错误:找不到模块

更新

在干净构建并重新运行 qmake 后,错误编辑器消失了,但在运行时我得到:

qrc:/analyzer.qml:7 模块“jbQuick.Charts”未安装

更新 如 cmets 中所述,我在 main.cpp 中添加了导入路径:

engine.addImportPath(QStringLiteral("qmlModules"));

但错误依然存在。

禁用影子构建解决了这个问题。看起来我在部署步骤中遗漏了一些东西(qml 模块文件的副本)

CONFIG += c++11 qml_debug
TEMPLATE = app

QT += qml quick widgets webkit webkitwidgets


HEADERS += VKApi.h \
    VKResponse.h \
    VKRequest.h \
    VKRequestManager.h \
    VKProfileAnalyzer.h \
    VKGroup.h \
    VKDayStats.h

SOURCES += main.cpp \
            VKApi.cpp \
    VKResponse.cpp \
    VKRequest.cpp \
    VKRequestManager.cpp \
    VKProfileAnalyzer.cpp \
    VKGroup.cpp \
    VKDayStats.cpp


RESOURCES += qml.qrc

QML_IMPORT_TRACE = 1

# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH += ./qmlModules
QML2_IMPORT_PATH += ./qmlModules

# Default rules for deployment.
include(deployment.pri)

【问题讨论】:

  • 修改.pro文件后是否重新运行qmake?
  • @MrEricSir 在干净构建并重新运行 qmake 后,qtcreator 在编辑器中不再显示错误,但在运行时我得到模块“jbQuick.Charts”未安装
  • 这会有所帮助吗:github.com/jwintz/qchart.js/issues/3
  • @juzzlin 是的,谢谢。看起来类似的问题,但在添加导入路径后:engine.addImportPath(QStringLiteral("qmlModules")); engine.addImportPath(QStringLiteral("jbQuick/Charts"));我仍然收到错误消息。禁用影子构建解决了这个问题。但看起来我在部署步骤中遗漏了一些东西。我应该添加一些东西来部署模块吗?

标签: qt qml


【解决方案1】:

感谢你们所有的cmets。

总结在本地(在项目目录中)安装 QML 模块所需的所有步骤:

  1. 确保 var QML_IMPORT_PATHS 在 *.pro 中定义

QML_IMPORT_PATH += ./qmlModules

  1. 在 main.cpp 中添加导入路径(用于 qmake 项目)
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);


    QQmlApplicationEngine engine;
    engine.addImportPath(QStringLiteral("qmlModules"));
    engine.load(QUrl(QStringLiteral("qrc:/analyzer.qml")));

    return app.exec();
}
  1. 确保正确部署插件的文件。我使用了来自here 的解决方案
copydata.commands = $(COPY_DIR) $$PWD/qmlModules $$OUT_PWD
first.depends = $(first) copydata
export(first.depends)
export(copydata.commands)
QMAKE_EXTRA_TARGETS += first copydata

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-23
    • 2019-07-16
    • 2019-01-09
    • 1970-01-01
    • 2019-04-02
    • 2022-12-18
    • 2018-05-27
    • 2019-10-30
    相关资源
    最近更新 更多