Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt qml本地导入:highlited或works_Qt_Import_Qml_Local_Highlight - Fatal编程技术网

Qt qml本地导入:highlited或works

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/ ---

我在尝试导入本地目录qml文件时遇到问题(它们位于qml.qrc中的另一个前缀中)

因此,我在部署时出错:

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 {
       [..]
    }