我参与了一个项目,该项目有一名设计师在Design Studio开发.ui.qml表单(以及相关资产(,而我,开发人员,正在开发一个现有的Qt Creator.pro项目。我想把这两个项目放在不同的存储库中。
会不会有人好心地指着一本涵盖这方面的教程?还是wiki页面?或者网络上的其他资源,解释如何做我想做的事情,即使用.pro项目中QtQuick qml文件中.qml项目中的.ui.qml资源。
谢谢你的指点。
-----更新以获取更多详细信息-----
我有两个项目,分别叫marge和patty。Patty是一个.qmlproject
,由设计师在Qt Design Studio中开发,包含.ui.qml
文件中的UI表单以及相关的图形资产和主题等。它在自己的git存储库中。另一方面,Marge是我在QtCreator中开发的.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 {
}
这对我不起作用,这正是我想弄清楚的。
Qt Design Studio手册中有一章名为"将UI项目转换为应用程序"。
基本上,您只需将QML文件和相关资产从Qt UI Quick项目(Design Studio项目(复制到基于qmake的应用程序项目(.pro项目(中,并将它们添加到其中的Qt资源文件中。
仅供参考: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中