首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在QQuickItem上绘制QQuickItem

如何在QQuickItem上绘制QQuickItem
EN

Stack Overflow用户
提问于 2017-06-30 22:48:04
回答 1查看 435关注 0票数 1

我有两个QQuickItem,我想在C++中画一个放在另一个上面,然后再暴露给QML。我之所以这样做,是因为我希望第二个QQuickItem (从现在起我将其称为背景QQuickItem )作为第一个QQuickItem (从现在起我将其称为父QQuickItem )的背景,然后在两个项目的顶部绘制一个QPixmap (已使用QPainter绘制)。我还希望将第二个“后台”QQuickItem作为属性传递给第一个QQuickItem,这样就可以从QML中动态设置它。有谁知道该怎么做吗?

我想提一下,这两个QQuickItem都有QQuickItem::updatePaintNode()的实现。有没有办法让他们一起工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-30 23:11:51

为此,您必须使用可视parent property (请注意,在c++中,您可以通过setParentItem()parentItem()访问它,而不是使用parent(),后者用于QObject父对象)。

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

或者,这就是Qt Quick Controls 2所做的事情,你可以让一个QQuickItem什么都不画,只做你的背景和内容项的父级(QQC2控件将它们的contentItem公开为一个属性,但你不需要这样做)。为了获得一些灵感,你可以在这里查看qqc2的Control源代码:https://code.woboq.org/qt5/qtquickcontrols2/src/quicktemplates2/qquickcontrol.cpp.html

不要忘了根据项目的大小来调整背景的大小。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44849213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档