首页 文章

如何在QQuickItem上绘制QQuickItem

提问于
浏览
1

我有两个 QQuickItem s,我希望在它暴露给QML之前在C中绘制一个 . 我想这样做是因为我希望第二个 QQuickItem (我将从这里称为背景 QQuickItem )作为第一个 QQuickItem 的背景(我将从此处称为父 QQuickItem )然后绘制a QPixmap (已使用 QPainter 绘制)在两个项目的顶部 . 我还希望将第二个"background" QQuickItem 作为属性传递给第一个 QQuickItem ,以便可以从QML动态设置它 . 有没有人知道如何做到这一点?

我想提一下, QQuickItem 都有 QQuickItem::updatePaintNode() 的实现 . 有没有办法让它们一起工作?

1 回答

  • 1

    要做到这一点,你必须使用visual parent property(请注意,在c中你用 setParentItem()parentItem() 访问它,而不是 QObject _用于 QObject 父亲) .

    如果你想拥有一个背景属性,我想你不要_2116661_ s z 到-1所以它会在你的项目背后绘制 .

    或者,这就是Qt Quick Controls 2所做的,你可以画一个 QQuickItem 画,只是你的背景和你的内容项的父母(QQC2控件将他们的 contentItem 暴露为一个属性,但你不要't have to). For some inspiration you can check the source code of QQC2' s Control这里:https://code.woboq.org/qt5/qtquickcontrols2/src/quicktemplates2/qquickcontrol.cpp.html

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

相关问题