问题标签 [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.

0 投票
1 回答
440 浏览

qt - 如何将 QQuickItem 的位置转换为它的新父级

我有 2 s,如下所示,我可以使用这样QQuickItem的方法在 C++ 端获取。QMLEngine

注意: quick_item_1的直接父级不同&quick_item_2的直接父级也不同。但是它们都在同一个应用程序窗口中绘制到不同的直接父级中。

我在不同的QQuickItem. 让我们称之为new_parent_surfacenew_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_1quick_item_2

我试图研究 QQuickItem 的映射 API,如mapToItem并像这样尝试它们。

但定位仍然不正确。

那么,在执行setParentItem之后,如何将 QQuickItem 的位置映射到其新的父 QQuickItem 中?

0 投票
1 回答
128 浏览

qt - 如何调整纹理的大小以仅占用 QQuickItem UI 的一部分

我已通过以下方式覆盖,以在此处调用的派生类updatePaintNode上绘制 OpenGL 纹理。QQuickItemMyQQuickItem

这可以很好地呈现纹理内容,但涵盖了我的整个MyQQuickItemUI。

如何减少纹理的底部边距以适应 80% 的高度MyQQuickItem。我想将纹理渲染到一部分 MyQQuickItem并将其余部分留空或黑色?内有可能吗updatePaintNode

注意这里的纹理大小不是UI窗口大小。我的纹理大小是800 x 800。而 UI 窗口大小不同,取决于屏幕。

0 投票
1 回答
391 浏览

c++ - 如何禁用 QQuickItem 上的更新

我有一个QQuickItem派生类

我正在一个单独的 UI 上做一些事情,这会导致updatePaintNodeofMyQQuickItem被解雇。如果我在 cpp 端有一个指向 MyQQuickItem 的指针,就像这样,

MyQQuickItem当我不希望它被调用时,如何禁用它的 updatePaintNode?
第二个问题:如果是,如何再次恢复它?

0 投票
1 回答
57 浏览

c++11 - 将 QQuickItem 指针添加到 std::map 会使它们都是“不可访问”的指针或项

这个问题涉及Qt,但我的逻辑可能是纯C++问题。

我正在将QQuickItems 添加到有关s 及其各自父母std::map列表的商店信息中。QQuickItem

编码:

通过上面的循环进行调试,items地图显示零个带有标签的项目not access

像这样再次遍历地图。

问题:

但是,当我尝试遍历地图时,没有指向我QQuickItem的 s 的有效指针。事实上,地图中似乎没有添加任何项目。

问题:

我的逻辑有什么问题?我应该如何将QQuickItems 添加到 std::map 以便我可以安全地检索它们。

0 投票
1 回答
584 浏览

qt - 如何创建 QQuickItem 的单独副本并将其呈现在不同的窗口上

我有一个QQuickItem像这样从 C++ 端获取的。

my_item是有效的,并且设置了所有属性。

场景
我有2 个窗口需要QQuickItem交替绘制。我想把它渲染my_item到另一个窗口。只要我将父级设置my_item为另一个窗口,这一切都很好

这需要我setParentItem再次回到my_item的原始窗口,否则它在原始窗口上不可见。这是有效的,但给了我不必要的依赖。相反,我正在尝试创建QQuickItem& 的副本并setParentItem对其进行操作。通过这样复制:

问题:
但这似乎没有创建QQuickItem& 的副本,因此我没有看到my_itemon的副本the_other_window

问题:
我想知道的是,我怎样才能创建一个有效的副本 aQQuickItem到另一个指针QQuickItem * item_copy中并在另一个窗口上渲染它而不影响原始的可见性/状态QQuickItem

0 投票
1 回答
582 浏览

qt - 如何在 C++ 端从头开始创建一个新的 QQuickItem 副本,其属性与现有副本相同

我有一个QQuickItem像这样从 C++ 端获取的。

my_item是有效的,并且设置了所有属性。

场景
我有2 个窗口需要QQuickItem交替绘制。我想把它渲染my_item到另一个窗口。只要我将父级设置my_item为另一个窗口,这一切都很好

这需要我setParentItem再次回到my_item的原始窗口,否则它在原始窗口上不可见。这是有效的,但给了我不必要的依赖。相反,我正在尝试创建QQuickItem& 的副本并setParentItem对其进行操作。通过这样复制:

问: 我想做item_copymy_item. 我了解到这QQuickItem是不可复制的。所以,想要设置my_iteminto的所有属性item_copymy_item从而从头开始重建。我怎样才能做到这一点?我应该主要复制哪些属性?宽度,高度,x,y & 还有什么?

有没有一种方法可以将所有有效属性复制到这个新属性中而无需逐一复制?

0 投票
1 回答
289 浏览

qt - 在第二个窗口上渲染 QQuickItem 而不更改其父层次结构

我必须将QQuickItem特定窗口所拥有的渲染到另一个窗口中。基本上MyQQuickItem归window1所有,在window2上渲染。由于某些功能,此切换必须在我的应用程序中反复发生。

我做了以下来实现目标&代码基本上工作正常

代码:

问题:
上述技术在功能上工作正常。但这需要我在将父项从 window1 设置为 window2 并再次返回之间折腾几次。

问题:
还有其他方法MyQQuickItem可以在 2 个窗口之间共享吗?或者是否可以MyQQuickItem在两个窗口上交替显示而无需更改父层次结构

0 投票
1 回答
666 浏览

qt - Qt QML - 在 Qt Location 中创建我自己的形状

我目前正在开发一个提供地图查看器的 Qt Quick 应用程序。我想创建不规则形状(多个形状),然后将它们放在地图上。这是使用 QQuickPaintedItem (用 C++ 编写 QML 扩展)的好方法还是有另一种方法可以做到这一点?还是在 Map Viewer 中创建我自己的形状,如 MapCircle(例如 MapCustom)?

0 投票
1 回答
2566 浏览

qt - 如何在 MouseArea 拖动上平移 QML 项目

我有一个使用Qt 5.10商业版在iOSOSX上运行的Qt 应用程序。我有一个托管图像的QML 项目。当用户的手指在其上拖动或鼠标被拖动时,我正在尝试平移QML 项目。

以下是我试图使我的QML 项目可平移:

代码:

我了解我必须更新何时xy处于活动状态以及正在更新的位置。但我正在努力弄清楚我应该如何重新计算新的和MyQmlItemonXChangedonYChangedx ymy_qml_item.xmy_qml_item.y

问题:
我也正在获取xy更新。基本问题是,如何计算加上不断更新和。onXChangedonYChangedmy_qml_item.xmy_qml_item.y

有没有用于平移或拖动项目的 Qt/QML 的好例子QML

是否有某种方法可以通过仅设置默认值x和来复制以下锚点y?因为,它与拖动QML组件直接冲突

0 投票
1 回答
872 浏览

qt - 如何对儿童可见度的变化做出反应?

我有不同的容器物品,当他们的所有孩子都不可见时,我想让它们不可见。

动态地,一些代码递归地解析所有项目并根据某些过滤器(如搜索输入)将它们设置为可见或不可见。此过滤将忽略容器项。

过滤后,如何检测可见性已更改并相应地更新我的容器项目?

到目前为止,我有这段代码,但每次更改孩子的可见性时我都需要执行此代码: