如何在 Qt Creator .pro 项目中使用来自 Design Studio 的 .qmlproject .ui.qml 表单?
how to use .qmlproject .ui.qml forms from Design Studio in Qt Creator .pro project?
我参与了一个项目,该项目有一位设计师在 Design Studio 中开发 .ui.qml 表单(以及相关资产),而我作为开发人员正在处理现有的 Qt Creator .pro 项目。我想将这两个项目保存在不同的存储库中。
有人会好心指出涵盖此内容的教程吗?或者维基页面?或者网络上的一些其他资源解释了如何做我想做的事情,即使用我的 .pro 项目中 QtQuick QML 文件中的 .qmlproject 中的 .ui.qml 资源。
感谢所有指点。
-----更新更多细节-----
我有 2 个项目,名为 marge 和 patty。 Patty 是一个 .qmlproject
,由设计师在 Qt Design Studio 中开发,包含 .ui.qml
文件中的 UI 表单以及相关的图形资产和主题等。它在其拥有 git 存储库。另一方面,Marge 是我在 Qt Creator 中开发的 .pro
应用程序——它是 QtQuick QML 和支持 C++ 的混合体。我认为这是一种相当典型的方法,但如果我正在做的事情让我的生活变得更加困难,请指出不同的方向。
在 Marge 的 qml.qrc
文件中,我添加了一个包含 3 个条目(到目前为止)的元素,这些条目引用了 patty 项目中的 .qml 和 .ui.qml 资源:
<qresource prefix="/forms">
<file>../patty/StatusBarForm.ui.qml</file>
<file>../patty/Tempo.qml</file>
<file>../patty/TempoForm.ui.qml</file>
</qresource>
我确实在 marge 项目导航器的 Qt Creator 中看到了这些资源,但我不知道现在如何在 marge 中的其他 QML 文件中使用这些资源。我希望能够有一个 StatusBar.qml 文件,例如,它包含如下内容:
import QtQuick 2.0
import "qrc:/forms/../patty/StatusBarForm.ui.qml"
StatusBarForm {
}
这对我不起作用,这就是我想要弄清楚的。
有一章名为Converting UI Projects to Applications in Qt Design Studio Manual。
基本上,您只需将 QML 文件和相关资源从 Qt UI Quick 项目(Design Studio 项目)复制到基于 qmake 的应用程序项目(.pro 项目),并将它们添加到 Qt 资源文件( s) 在里面。
仅供参考:Qt Creator 支持添加新资源文件以及将现有文件和现有目录添加到资源。
更新部分的答案:
您可以在资源文件中使用 file 标签的 alias
属性。
<qresource prefix="/">
<file alias="StatusBarForm.ui.qml">../patty/StatusBarForm.ui.qml</file>
</qresource>
并且如果您将 qresource 标记的 prefix
属性保留为指向根目录,则无需在 QML 文件中导入表单目录。否则,您添加 import "qrc:/forms"
,这样您导入的是一个目录,而不是单个文件。
import QtQuick 2.0
StatusBarForm {
}
为外部资源添加一个单独的资源文件是有意义的,例如patty.qrc,而不是将所有内容收集到默认生成的 qml.qrc。 (Qt Creator: 右击项目顶部 -> 添加新... -> Qt -> Qt 资源文件)
我参与了一个项目,该项目有一位设计师在 Design Studio 中开发 .ui.qml 表单(以及相关资产),而我作为开发人员正在处理现有的 Qt Creator .pro 项目。我想将这两个项目保存在不同的存储库中。
有人会好心指出涵盖此内容的教程吗?或者维基页面?或者网络上的一些其他资源解释了如何做我想做的事情,即使用我的 .pro 项目中 QtQuick QML 文件中的 .qmlproject 中的 .ui.qml 资源。
感谢所有指点。
-----更新更多细节-----
我有 2 个项目,名为 marge 和 patty。 Patty 是一个 .qmlproject
,由设计师在 Qt Design Studio 中开发,包含 .ui.qml
文件中的 UI 表单以及相关的图形资产和主题等。它在其拥有 git 存储库。另一方面,Marge 是我在 Qt Creator 中开发的 .pro
应用程序——它是 QtQuick QML 和支持 C++ 的混合体。我认为这是一种相当典型的方法,但如果我正在做的事情让我的生活变得更加困难,请指出不同的方向。
在 Marge 的 qml.qrc
文件中,我添加了一个包含 3 个条目(到目前为止)的元素,这些条目引用了 patty 项目中的 .qml 和 .ui.qml 资源:
<qresource prefix="/forms">
<file>../patty/StatusBarForm.ui.qml</file>
<file>../patty/Tempo.qml</file>
<file>../patty/TempoForm.ui.qml</file>
</qresource>
我确实在 marge 项目导航器的 Qt Creator 中看到了这些资源,但我不知道现在如何在 marge 中的其他 QML 文件中使用这些资源。我希望能够有一个 StatusBar.qml 文件,例如,它包含如下内容:
import QtQuick 2.0
import "qrc:/forms/../patty/StatusBarForm.ui.qml"
StatusBarForm {
}
这对我不起作用,这就是我想要弄清楚的。
有一章名为Converting UI Projects to Applications in Qt Design Studio Manual。
基本上,您只需将 QML 文件和相关资源从 Qt UI Quick 项目(Design Studio 项目)复制到基于 qmake 的应用程序项目(.pro 项目),并将它们添加到 Qt 资源文件( s) 在里面。
仅供参考:Qt Creator 支持添加新资源文件以及将现有文件和现有目录添加到资源。
更新部分的答案:
您可以在资源文件中使用 file 标签的 alias
属性。
<qresource prefix="/">
<file alias="StatusBarForm.ui.qml">../patty/StatusBarForm.ui.qml</file>
</qresource>
并且如果您将 qresource 标记的 prefix
属性保留为指向根目录,则无需在 QML 文件中导入表单目录。否则,您添加 import "qrc:/forms"
,这样您导入的是一个目录,而不是单个文件。
import QtQuick 2.0
StatusBarForm {
}
为外部资源添加一个单独的资源文件是有意义的,例如patty.qrc,而不是将所有内容收集到默认生成的 qml.qrc。 (Qt Creator: 右击项目顶部 -> 添加新... -> Qt -> Qt 资源文件)