【问题标题】:Text in Custom QQuickItem自定义 QQuickItem 中的文本
【发布时间】:2018-08-15 11:08:35
【问题描述】:

我正在实现一个自定义 QQuickItem,它应该能够制作一个线图(x vs y)。出于性能原因,我使用 QSGNodes 执行此操作。我想知道为 x-ticks 实现文本标签的最佳方法是什么(它们应该根据数据范围自动设置)。

我应该使用 QQuickPaintedItem 还是有办法通过 QQuickItem 做到这一点?

或者是否可以在我的 c++ 文件中动态创建文本 qml 类型 (http://doc.qt.io/qt-5/qml-qtquick-text.html)?

【问题讨论】:

    标签: qt qtquick2


    【解决方案1】:

    不要通过重新发明轮子使事情变得过于复杂。 QML 已经有一个Text 类型。

    有一个缺点 - 决定不使用公共 API 以 C++ 形式使用来自 C++ 的 QML 类型。而且我不建议从 C++ 创建 QML 对象,这只会适得其反。

    这意味着您的自定义 QML 类型不会纯粹在 C++ 中实现,您可以在 C++ 中实现“核心”内容,并且仍然在 QML 端构成完整的类型,您还可以在其中使用绑定、锚点、模型、定位器、动态范围以及所有在 C++ 中难以实现的好东西。

    这种情况并不少见,很多库存的 QML 控件都是以这种方式实现的——一个暴露给 QML 的抽象 C++ 核心,在那里它被完成为一个完整的 QML 语法控件。

    【讨论】:

    • 感谢您的回答。你能给我一个指针,这将如何在 qml 方面完成?假设我的 c++ 类有一个可以返回刻度位置列表的函数。如何在 qml 中生成标签?
    • @numberCruncher 看看在 C++ 端实现 QAbstractListModel,然后在 QML 中你有像 ListViewRepeater 这样的东西,它们会自动实例化定义的可视对象并将其与数据模型。
    • 在 QML 中执行此操作将使您在更改设计和外观方面拥有很大的活力,并且与在 C++ 中执行此操作相比,将节省您很多的时间。
    猜你喜欢
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多