如何在 QQuickItem 上绘制 QQuickItem
How to draw a QQuickItem on a QQuickItem
我有两个QQuickItem
,我想在C++暴露给QML之前在另一个上面画一个。我想这样做是因为我希望第二个QQuickItem
(从这里开始我称之为背景QQuickItem
(充当第一个QQuickItem
的背景(从这里开始我称之为父QQuickItem
(,然后在两个项目上绘制一个QPixmap
(已使用 QPainter
绘制(。我还希望将第二个"后台"QQuickItem
作为属性传递给第一个QQuickItem
,以便可以从 QML 动态设置它。有人知道如何做到这一点吗?
我想提一下,这两个QQuickItem
都有QQuickItem::updatePaintNode()
的实现。有没有办法让它们一起工作?
为此,您必须使用 visual parent
属性(请注意,在 c++ 中,您可以使用 setParentItem()
和 parentItem()
访问它,而不是parent()
用于QObject
父级(。
如果你想要一个背景属性,我想你不希望你的背景作为你的项目的父级,所以你可以将自己设置为背景的父级,并将背景的z
设置为 -1,以便它在你的项目后面绘制。
或者,这就是Qt快速控件2所做的,你可以有一个QQuickItem
什么都不画,只是你的背景和内容项的父级(QQC2控件将其contentItem
公开为属性,但你不必这样做(。 为了获得一些灵感,你可以在这里查看QQC2 Control
的源代码:https://code.woboq.org/qt5/qtquickcontrols2/src/quicktemplates2/qquickcontrol.cpp.html
不要忘记处理将背景大小调整为项目大小。
- QuadTree只在窗口的右上角绘制
- 绘制旋转的三角形
- flutter:即使shouldRepaint()返回true,自定义画家也不会重新绘制
- 如何在QT中的自定义视频小工具t上绘制矩形
- 如何在Visual Basic中使用矩形函数OpenGL绘制矩形
- 无法使用VAO和EBO(openGL)绘制多个对象
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 绘制顺时针三角形,重新排序点
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- SFML 文本未绘制在窗口上
- 构造函数中的 QQuickItem 父项 null
- 如何在快板的屏幕中显示子位图的绘制?
- 如何绘制自定义形状的元素?
- QPainter 将 QBrush 设置为 在 QT/C++ 中绘制文本
- 除非重新绘制大小,否则SDL_Texture在调整大小后呈现黑色
- 绘制文本问题
- 要在屏幕上绘制一些小瓷砖,我应该使用 QQuickItem 还是 QQuickPaintedItem?
- 如何在 QQuickItem 上绘制 QQuickItem
- 在QQuickItem中绘制多个不同颜色的点
- Qt 5 让 QQuickItem 在不使用 QPainter 的情况下绘制椭圆