未安装QML模块(QT5.15、Qmake)

问题描述 投票:0回答:1

在尝试将新的自定义 QML 模块导入项目时,我面临“模块未安装”的问题。我已经尝试了互联网和ChatGPT的许多解决方案,但我还没有找到适合我的情况的正确答案。

这是我的项目结构。

<ProjectRoot>
  |-- frontend/
      |-- AlphaQ/
          |-- Styles/
              |-- Style1.0.qml
              |-- qmldir
          |-- Themes/
              |-- Themes1.0.qml
              |-- qmldir
      |-- main.qml
      |-- Home.qml
      |-- Home.js
      |-- qtquickcontrols2.conf
  |-- src/
      |-- main.cpp
  |-- qml.qrc

qml.qrc的内容:

<RCC>
    <qresource prefix="/">
        <file>frontend/main.qml</file>
        <file>frontend/Home.qml</file>
        <file>frontend/Home.js</file>
        <file alias="qtquickcontrols2.conf">frontend/qtquickcontrols2.conf</file>
        <file alias="icons/send40x40.png">frontend/icons/send40x40.png</file>
        <file>frontend/AlphaQ/Styles/Style1.0.qml</file>
        <file>frontend/AlphaQ/Themes/Themes1.0.qml</file>
        <file>frontend/AlphaQ/Themes/qmldir</file>
        <file>frontend/AlphaQ/Styles/qmldir</file>
    </qresource>
</RCC>

前端/AlphaQ/Styles/Style1.0.qml:

module AlphaQ.Styles
singleton Style 1.0 Style1.0.qml

前端/AlphaQ/主题/Themes1.0.qml:

module AlphaQ.Themes
singleton Themes 1.0 Themes1.0.qml

main.qml

import QtQuick 2.15
import QtQuick.Window 2.15

import AlphaQ.Styles 1.0

在main.cpp中调用此命令即可解决问题:

qmlRegisterSingletonType(QUrl("qrc:/frontend/AlphaQ/Styles/Style1.0.qml"), "AlphaQ.Styles", 1, 0, "StyleA");

但是我期待 qmldir 的解决方案,请帮我找出问题所在。 谢谢

这个列表是我尝试过的:

  1. engine.addImportPath
  2. 在 QRC 中设置前缀 AlphaQ.Styles
  3. qmlRegisterSingletonType(这解决了我的问题,但我期望其他解决方案)
  4. 设置 QML_IMPORT_PATH = $$PWD rontend\
qt qml qqmlengine
1个回答
0
投票

frontend/
中删除
<file>frontend/*.qml</file>
并将其添加到
<qresource prefix="/">

像这样:

<RCC>
<qresource prefix="/frontend/">
    <file>main.qml</file>
    <file>Home.qml</file>
    <file>Home.js</file>
    <file alias="qtquickcontrols2.conf">qtquickcontrols2.conf</file>
    <file alias="icons/send40x40.png">icons/send40x40.png</file>
    <file>AlphaQ/Styles/Style1.0.qml</file>
    <file>AlphaQ/Themes/Themes1.0.qml</file>
    <file>AlphaQ/Themes/qmldir</file>
    <file>AlphaQ/Styles/qmldir</file>
</qresource>

或者您可以将

qml.qrc
移动到
fontend
目录 并添加

engine.addImportPath( ":/" );

致你的

main.cpp

© www.soinside.com 2019 - 2024. All rights reserved.