在尝试将新的自定义 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 的解决方案,请帮我找出问题所在。 谢谢
这个列表是我尝试过的:
从
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