【问题标题】:how to use .qmlproject .ui.qml forms from Design Studio in Qt Creator .pro project?如何在 Qt Creator .pro 项目中使用来自 Design Studio 的 .qmlproject .ui.qml 表单?
【发布时间】:2021-04-26 01:35:03
【问题描述】:

我参与了一个项目,该项目有一名设计师在 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 {
}

这对我不起作用,这就是我想要弄清楚的。

【问题讨论】:

    标签: qt qml qt-quick qtquick-designer


    【解决方案1】:

    Qt Design Studio Manual中有一个名为Converting UI Projects to Applications的章节。

    基本上,您只需将 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 中。 (Qt Creator:右键单击项目顶部 -> 添加新... -> Qt -> Qt 资源文件

    【讨论】:

    • 我想将文件保存在各自的项目目录中,而不必一直将内容从一个项目复制到另一个项目。
    • 我喜欢为外部资源创建一个单独的资源文件的想法。 位也很有帮助。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 2014-04-14
    相关资源
    最近更新 更多