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 从子目录导入样式文件的主要内容,如果未能解决你的问题,请参考以下文章