我有两个 QQuickItem
s,我希望在它暴露给QML之前在C中绘制一个 . 我想这样做是因为我希望第二个 QQuickItem
(我将从这里称为背景 QQuickItem
)作为第一个 QQuickItem
的背景(我将从此处称为父 QQuickItem
)然后绘制a QPixmap
(已使用 QPainter
绘制)在两个项目的顶部 . 我还希望将第二个"background" QQuickItem
作为属性传递给第一个 QQuickItem
,以便可以从QML动态设置它 . 有没有人知道如何做到这一点?
我想提一下, QQuickItem
都有 QQuickItem::updatePaintNode()
的实现 . 有没有办法让它们一起工作?
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不要忘记将背景大小调整为项目大小 .