Qt qml本地导入:highlited或works
我在尝试导入本地目录qml文件时遇到问题(它们位于qml.qrc中的另一个前缀中) 因此,我在部署时出错:Qt qml本地导入:highlited或works,qt,import,qml,local,highlight,Qt,Import,Qml,Local,Highlight,我在尝试导入本地目录qml文件时遇到问题(它们位于qml.qrc中的另一个前缀中) 因此,我在部署时出错: qrc:/QMLs/welcome.qml:4:1: "Components": no such directory 但有目录组件和Qt Creator中的HIcon突出显示 我尝试了另一种导入方法: import "qrc:/Components/QMLs/Components" 还有它的作品!但现在侧菜单没有突出显示 项目中的文件结构: main.qml --QMLs/ ---
qrc:/QMLs/welcome.qml:4:1: "Components": no such directory
但有目录组件和Qt Creator中的HIcon突出显示
我尝试了另一种导入方法:
import "qrc:/Components/QMLs/Components"
还有它的作品!但现在侧菜单没有突出显示
项目中的文件结构:
main.qml
--QMLs/
----class.qml
----welcome.qml
....
----Components/
------HIcon.qml
问题:如何正确导入目录?您可以简单地使用:
import "rel_path"
其中rel_path
是从包含import语句的文件的角度来看的相对路径
例如,如果组件C
位于父目录名为D
的子目录中,请使用:
import "../D/"
从现在起,您可以在文件中自由使用
C
。使用正确的qrc导入时高亮显示不起作用的原因是QtCreator没有检查qrc文件
此外,您还必须知道资源系统如何打包文件。每个文件都将打包为与.qrc文件的相对路径:
main.qml
->qrc:///main.qml
qml/welcome.qml
->qrc:///QMLs/welcome.qml
在资源文件中使用前缀时,这些前缀将放在相对路径的前面。(不是Qt将该文件“复制”到指定的前缀/文件夹中)在您的项目中,会导致以下情况:
qml/Components/SideMenu.qml
->qrc:///Components/QMLs/Components/SideMenu.qml
qml/Components/Helpers/MenuBackIcon.qml
->qrc:///Helpers/QMLs/Components/Helpers/MenuBackIcon.qml
这不仅仅是绝对URL的改变。它还将文件“移动”到彼此相对的位置
现在,为了让事情变得更好,您可以为.qrc文件中的每个文件指定一个alies。别名可以是一个文件名,该文件名将与前缀组合构成完整的URL:
假设您为文件QMLs/Components/HIcon.qml
提供别名HIcon
。这将导致完整URL为:qrc:///Components/HIcon.qml
由于.qrc文件位于导入路径列表中,您现在可以像预期的那样编写代码:
import "Components"
[..]
HIcon {
[..]
}
结论/TL;博士
为每个文件指定一个别名,该别名由文件名组成,但没有路径。使用rel_路径导入是不实际的,因为项目在VCS下,因此在另一台计算机(工作站)中可能无法工作。我解决了这个问题!解决方案是将所有qml文件放在一个qrc前缀中,然后在.pro文件中将所有qml文件添加为“其他_文件”,然后通过高亮显示正确导入。所以所有的qml文件都是qml格式的,就像这个屏幕截图一样
import "Components"
[..]
HIcon {
[..]
}