问题标签 [qquickitem]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
qt - 如何将 QQuickItem 的位置转换为它的新父级
我有 2 s,如下所示,我可以使用这样QQuickItem
的方法在 C++ 端获取。QMLEngine
注意: quick_item_1
的直接父级不同&quick_item_2
的直接父级也不同。但是它们都在同一个应用程序窗口中绘制到不同的直接父级中。
我在不同的QQuickItem
. 让我们称之为new_parent_surface
。new_parent_surface
我通过将它们的父项更改为new_parent_surface
这样来绘制这两个项目。
这对于将它们绘制在新的父 QQuickItem 上的目标很好。我得到了两者quick_item_1
&quick_item_2
绘制new_parent_surface
。即使new_parent_surface
没有在 UI 上绘制,但如果我使用grabToImage of拍摄快照new_parent_surface
,我可以看到在它们上绘制的 2 个项目。到这里为止很好。
但是&的定位是不正确的。我想将它们定位为类似于它们放置原始父项的方式。我可以做一些百分比数学并尝试以与在其原始父级上绘制相同的方式定位它们,但没有 QQQuickItem 或 Qt API 可以将此定位转换为新父级吗?quick_item_1
quick_item_2
我试图研究 QQuickItem 的映射 API,如mapToItem并像这样尝试它们。
但定位仍然不正确。
那么,在执行setParentItem之后,如何将 QQuickItem 的位置映射到其新的父 QQuickItem 中?
qt - 如何调整纹理的大小以仅占用 QQuickItem UI 的一部分
我已通过以下方式覆盖,以在此处调用的派生类updatePaintNode
上绘制 OpenGL 纹理。QQuickItem
MyQQuickItem
这可以很好地呈现纹理内容,但涵盖了我的整个MyQQuickItem
UI。
如何减少纹理的底部边距以适应 80% 的高度MyQQuickItem
。我想将纹理渲染到一部分 MyQQuickItem
并将其余部分留空或黑色?内有可能吗updatePaintNode
。
注意这里的纹理大小不是UI窗口大小。我的纹理大小是800 x 800。而 UI 窗口大小不同,取决于屏幕。
c++ - 如何禁用 QQuickItem 上的更新
我有一个QQuickItem
派生类
我正在一个单独的 UI 上做一些事情,这会导致updatePaintNode
ofMyQQuickItem
被解雇。如果我在 cpp 端有一个指向 MyQQuickItem 的指针,就像这样,
MyQQuickItem
当我不希望它被调用时,如何禁用它的 updatePaintNode?
第二个问题:如果是,如何再次恢复它?
c++11 - 将 QQuickItem 指针添加到 std::map 会使它们都是“不可访问”的指针或项
这个问题涉及Qt,但我的逻辑可能是纯C++问题。
我正在将QQuickItem
s 添加到有关s 及其各自父母std::map
列表的商店信息中。QQuickItem
编码:
通过上面的循环进行调试,items
地图显示零个带有标签的项目not access。
像这样再次遍历地图。
问题:
但是,当我尝试遍历地图时,没有指向我QQuickItem
的 s 的有效指针。事实上,地图中似乎没有添加任何项目。
问题:
我的逻辑有什么问题?我应该如何将QQuickItem
s 添加到 std::map 以便我可以安全地检索它们。
qt - 如何创建 QQuickItem 的单独副本并将其呈现在不同的窗口上
我有一个QQuickItem
像这样从 C++ 端获取的。
my_item
是有效的,并且设置了所有属性。
场景
我有2 个窗口需要QQuickItem
交替绘制。我想把它渲染my_item
到另一个窗口。只要我将父级设置my_item
为另一个窗口,这一切都很好
这需要我setParentItem
再次回到my_item
的原始窗口,否则它在原始窗口上不可见。这是有效的,但给了我不必要的依赖。相反,我正在尝试创建QQuickItem
& 的副本并setParentItem
对其进行操作。通过这样复制:
问题:
但这似乎没有创建QQuickItem
& 的副本,因此我没有看到my_item
on的副本the_other_window
。
问题:
我想知道的是,我怎样才能创建一个有效的副本 aQQuickItem
到另一个指针QQuickItem * item_copy
中并在另一个窗口上渲染它而不影响原始的可见性/状态QQuickItem
?
qt - 如何在 C++ 端从头开始创建一个新的 QQuickItem 副本,其属性与现有副本相同
我有一个QQuickItem
像这样从 C++ 端获取的。
my_item
是有效的,并且设置了所有属性。
场景
我有2 个窗口需要QQuickItem
交替绘制。我想把它渲染my_item
到另一个窗口。只要我将父级设置my_item
为另一个窗口,这一切都很好
这需要我setParentItem
再次回到my_item
的原始窗口,否则它在原始窗口上不可见。这是有效的,但给了我不必要的依赖。相反,我正在尝试创建QQuickItem
& 的副本并setParentItem
对其进行操作。通过这样复制:
问:
我想做item_copy
和my_item
. 我了解到这QQuickItem
是不可复制的。所以,想要设置my_item
into的所有属性item_copy
。my_item
从而从头开始重建。我怎样才能做到这一点?我应该主要复制哪些属性?宽度,高度,x,y & 还有什么?
有没有一种方法可以将所有有效属性复制到这个新属性中而无需逐一复制?
qt - 在第二个窗口上渲染 QQuickItem 而不更改其父层次结构
我必须将QQuickItem
特定窗口所拥有的渲染到另一个窗口中。基本上MyQQuickItem
归window1所有,在window2上渲染。由于某些功能,此切换必须在我的应用程序中反复发生。
我做了以下来实现目标&代码基本上工作正常。
代码:
问题:
上述技术在功能上工作正常。但这需要我在将父项从 window1 设置为 window2 并再次返回之间折腾几次。
问题:
还有其他方法MyQQuickItem
可以在 2 个窗口之间共享吗?或者是否可以MyQQuickItem
在两个窗口上交替显示而无需更改父层次结构?
qt - Qt QML - 在 Qt Location 中创建我自己的形状
我目前正在开发一个提供地图查看器的 Qt Quick 应用程序。我想创建不规则形状(多个形状),然后将它们放在地图上。这是使用 QQuickPaintedItem (用 C++ 编写 QML 扩展)的好方法还是有另一种方法可以做到这一点?还是在 Map Viewer 中创建我自己的形状,如 MapCircle(例如 MapCustom)?
qt - 如何在 MouseArea 拖动上平移 QML 项目
我有一个使用Qt 5.10商业版在iOS和OSX上运行的Qt 应用程序。我有一个托管图像的QML 项目。当用户的手指在其上拖动或鼠标被拖动时,我正在尝试平移QML 项目。
以下是我试图使我的QML 项目可平移:
代码:
我了解我必须更新何时x
和y
处于活动状态以及正在更新的位置。但我正在努力弄清楚我应该如何重新计算新的和MyQmlItem
onXChanged
onYChanged
x
y
my_qml_item.x
my_qml_item.y
问题:
我也正在获取x
和y
更新。基本问题是,如何计算加上不断更新和。onXChanged
onYChanged
my_qml_item.x
my_qml_item.y
有没有用于平移或拖动项目的 Qt/QML 的好例子QML
?
是否有某种方法可以通过仅设置默认值x
和来复制以下锚点y
?因为,它与拖动QML组件直接冲突
qt - 如何对儿童可见度的变化做出反应?
我有不同的容器物品,当他们的所有孩子都不可见时,我想让它们不可见。
动态地,一些代码递归地解析所有项目并根据某些过滤器(如搜索输入)将它们设置为可见或不可见。此过滤将忽略容器项。
过滤后,如何检测可见性已更改并相应地更新我的容器项目?
到目前为止,我有这段代码,但每次更改孩子的可见性时我都需要执行此代码: