我尝试导入本地目录qml文件时遇到问题(它们位于qml.qrc中的另一个前缀中)
import QtQuick 2.0
import QtQuick.Controls 1.3
import QtQuick.Dialogs 1.2
import "Components"
//import "qrc:/Components/QMLs/Components"
Rectangle {
id: mainLocalRect
width: 300
height: 500
color: "orange"
HIcon {
id: hIcon
x: 0
y: 0
}
}
所以,我在部署时遇到错误:
qrc:/QMLs/welcome.qml:4:1: "Components": no such directory
但有目录组件,并在Qt Creator HIcon中突出显示。
https://yadi.sk/i/eF1QKfxEhsdiY
我尝试了另一种导入方式:
import "qrc:/Components/QMLs/Components"
它的作品!但现在SideMenu没有突出显示
https://yadi.sk/i/jmdgDZ4dhsdix
项目中文件的结构:
main.qml
--QMLs/
----class.qml
----welcome.qml
....
----Components/
------HIcon.qml
问题:如何正确导入目录?
答案 0 :(得分:1)
您可以简单地使用:
import "rel_path"
其中rel_path
是包含import语句的文件的相对路径。
例如,如果组件C
位于父目录D
中,请使用:
import "../D/"
从现在开始,您可以在文件中自由使用C
。
答案 1 :(得分:0)
使用正确的qrc导入时突出显示不起作用的原因是QtCreator不检查qrc文件。
此外,您必须知道资源系统如何打包文件。每个文件都将与它的.qrc文件的相对路径一起打包:
main.qml
- > qrc:///main.qml
QMLs/welcome.qml
- > qrc:///QMLs/welcome.qml
在资源文件中使用前缀时,这些前缀将被添加到相对路径中。 (并不是Qt'将该文件复制到指定的前缀/文件夹中)
在您的项目中导致以下情况:
QMLs/Components/SideMenu.qml
- > qrc:///Components/QMLs/Components/SideMenu.qml
QMLs/Components/Helpers/MenuBackIcon.qml
- > qrc:///Helpers/QMLs/Components/Helpers/MenuBackIcon.qml
这不仅是绝对URL的变化。它还“移动”相对于彼此的位置文件。
现在,为了让事情变得更好,您可以为.qrc文件中的每个文件指定一个alies。别名可以是一个文件名,它将与前缀组合以构成完整的URL:
假设您为文件HIcon
提供了别名QMLs/Components/HIcon.qml
。这将导致完整网址为qrc:///Components/HIcon.qml
因为您的.qrc文件位于导入路径列表中,所以您现在可以像预期的那样编写代码:
import "Components"
[..]
HIcon {
[..]
}
为每个文件指定一个别名,该别名由没有路径的文件名组成。