gpt4 book ai didi

c++ - 如何在 QQuickItem 上绘制 QQuickItem

转载 作者:行者123 更新时间:2023-11-30 05:11:52 49 4
gpt4 key购买 nike

我有两个 QQuickItem s 并且我想在将它暴露给 QML 之前用 C++ 在另一个之上绘制一个。我想这样做是因为我想要第二个 QQuickItem (从这里开始我将其称为背景 QQuickItem)作为第一个 QQuickItem 的背景。 (从这里开始我将其称为父级 QQuickItem)然后绘制一个 QPixmap (已使用 QPainter 绘制)在两个项目之上。我也更愿意传递第二个“背景”QQuickItem作为第一个属性 QQuickItem这样它就可以从 QML 动态设置。有没有人知道如何做到这一点?

我想提一下 QQuickItemQQuickItem::updatePaintNode() 的实现.有没有办法让它们协同工作?

最佳答案

为此,您必须使用视觉 parent property (请注意,在 C++ 中,您使用 setParentItem()parentItem() 访问它,而不是用于 QObject 的 parent() 父级)。

如果你想有一个背景属性,我猜你不想让你的背景作为你的项目的父级,所以你可以改为将自己设置为背景的父级并设置背景的 z 设置为 -1,以便它在您的项目后面绘制。

或者,这就是 Qt Quick Controls 2 所做的,您可以让 QQuickItem 不绘制任何内容,而只是作为背景和内容项的父项(QQC2 控件公开其 contentItem 作为属性,但您不必这样做)。如需一些灵感,您可以查看 QQC2 的源代码 Control这里:https://code.woboq.org/qt5/qtquickcontrols2/src/quicktemplates2/qquickcontrol.cpp.html

不要忘记将背景调整为项目的大小。

关于c++ - 如何在 QQuickItem 上绘制 QQuickItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44849213/

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