QML 从子目录导入样式文件

Posted

技术标签:

【中文标题】QML 从子目录导入样式文件【英文标题】:QML import style file from subdirectory 【发布时间】:2015-08-16 17:40:40 【问题描述】:

我在从子目录导入样式文件时遇到问题。

这是我的 *.pro 文件中的相关部分:

QML_IMPORT_PATH = \
src/gui/qml/views/startview/ \
src/gui/qml/views/createlocalgameview/ \
src/gui/qml/views/ \
src/gui/qml/components/styles/ \
src/gui/qml/components/ \
src/gui/qml/js/

例如我有一个文件 MyTextFieldStyle.qml 放在 src/gui/qml/components/styles/:

TextFieldStyle 
    [...]

我在 src/gui/qml/components/ 中有一个文件 TextArea.qml:

Item 
    [...]
    TextField 
        id: textField
        style: MyTextFieldStyle 
    
    [...]

现在我得到这个错误:

TextArea.qml: MyTextFieldStyle is not a type

如果我将 MyTextFieldStyle.qml 放在与 TextArea.qml (src/gui/qml/components/) 相同的目录中,它可以正常工作。但是我有许多组件和许多样式,因此我想将它们分开以获得更好的概览。有什么办法可以让这个工作吗?

【问题讨论】:

在文件顶部放置一个带有相对路径的import 语句就足够了。在您的示例中,您可以使用import './styles'。让我知道它是否有效,我可以创建一个响应,以便您可以接受它以供将来搜索。 注意:这个 QML_IMPORT_PATH *rap 不会影响任何东西,除了可能是创建者突出显示(惊喜!):0 是的,你是对的。非常感谢你。请创建一个我可以接受的答案! 为了让您的 QML_IMPORT_PATH 工作,您应该在目录样式中创建一个 qmldir 文件,在其中编写模块样式 MyTextFieldStyle 1.0 MyTextFieldStyle.qml,并在您的 qml 中导入样式 1.0,我认为它是比自己导入文件夹更好 【参考方案1】:

在文件顶部放置一个带有相对路径的import 语句就足够了。

在您的示例中,您可以使用import './styles'

如 cmets 中所述,QML_IMPORT_PATH 并非旨在解决该问题。

【讨论】:

以上是关于QML 从子目录导入样式文件的主要内容,如果未能解决你的问题,请参考以下文章

从子文件夹而不是同一目录导入模块?

QML导入模块

QML 导入模块

如何在 QT QML 中创建自己的目录?

QML模块在项目中有哪些优势?

使用 php 从子目录中获取 azure blob 文件