gpt4 book ai didi

qt - Qt QML 非可视化应用程序组件放在哪里

转载 作者:行者123 更新时间:2023-12-04 17:47:48 25 4
gpt4 key购买 nike

(我正在使用带有控件的 Qt 5、QtQuick 2。)

我正在编写我的第一个 QML 应用程序,并希望保持模块化和相对较小的文件长度。

我想将某些大批量的东西放入帮助文件中,但我不确定执行此操作的正确方法。

到目前为止,我遇到的两个示例是 FontLoaderAction .

在我的特殊情况下,我将在整个应用程序中使用 6 种字体,所以我想尽早加载它们,而不必再担心了。我的问题是,我应该把 FontLoader 放在哪里?年代?

一种选择是将它们放入 main.qml某处,但对我来说感觉有点困惑。我所做的是创建了一个文件 FontLoaders.qml , 其中包含:

Item {
width: 0; height: 0
FontLoader {
name: "myFont1"
source: "/fonts/myFont1.ttf"
}
FontLoader {
name: "myFont2"
source: "/fonts/myFont2.ttf"
}
// ...
}

然后,在 main.qml在某个地方,我只有一个 FontLoaders {} .

我的另一个例子是 Action .我有一大批 Action我希望或多或少在应用程序范围内可见。我有一个 AppMenuBar组件,这似乎是放置 Action 的自然位置s,但这基本上是定义菜单栏的 QML 文件大小的两倍,从逻辑上讲,两者可以分开。 (许多操作都可以通过菜单栏和应用程序中的其他按钮访问。)

我的“解决方案”基本上可以工作,但我觉得它们很草率(尤其是 FontLoaders ),我想知道是否有一些我还没有想到的更干净的方法来做到这一点。

最佳答案

我有类似的问题。我确实查看了 Qt 的一些来源,并认为您可以这样做:

pragma Singleton

import QtQuick 2.0
QtObject {

property FontLoader fontLatoBlackLoader: FontLoader {
name: "fontLatoBlack"
source: "qrc:/fonts/Lato-Black.ttf"
}
}

在您说的 fonts.qml 文件中,然后在您刚刚执行的应用程序中:
Label {
text: "Sample tesxt"
font.family: Fonts.fontLatoBlackLoader.name
}

您不必实例化 Fonts 对象。它只存在于全局范围内。

希望有帮助。我花了几个小时自己解决这个问题,因为我有同样的马虎/丑陋问题:)

关于qt - Qt QML 非可视化应用程序组件放在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27692914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com