问题标签 [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 回答
417 浏览

qt - Qt:如何在 C++ 端而不是 QML 上监视 Q_PROPERTY 更改

我正在使用 Qt 5.9.3。我在我的应用程序中声明了以下属性main.qml

代码:

问题:

如何onNextColorChanged在 C++ 端定义?

我知道我也可以nextColor在 C++ 类中作为属性MyQuickItem。像这样

OnNextColorChanged内部可以监控MyQuickItem吗?

0 投票
1 回答
716 浏览

qt - 如何将 QQuickItem 的中心转换为新中心

我有一个 Qt QML 应用程序。以下是应用程序的完整代码:

代码:

问:
我的问题很简单。如何将任何中心更改QQuickitem为新中心?因此,在上述情况下,当获得点击事件 时,如何将中心更改为my_item_1新中心(Qt.point(some_x_center, some_y_center) )。另外,是否有可能获得另一个项目的中心?Like或'center 申请到的目标?my_item_2app_main_windowmy_item_2my_item_1

PS:
我已经简化了代码以使问题客观。my_item_1我的实际代码中有一个相当复杂的逻辑,我需要在不使用锚点的情况下将某些东西重新对齐到一个新的中心,因为QQuickitem我试图用它来缩放并平移到一个新点。

0 投票
1 回答
666 浏览

javascript - 如何在不使用 QML 函数的情况下根据其当前值转换 QQuickItem 的 x 或 y 属性

我使用的是Qt 5.9.3商业版。

场景
我有逻辑要在我的代码的 Qt QML 部分中执行。点击一些随机按钮。我想将 QML 矩形移动到另一个位置。另一个位置是(x, y) position根据矩形的当前位置计算的。

以下是我想做的事情:

代码:

这个问题的目的:
请注意,我想以声明方式进行计算。我可以轻松地创建一个QML 函数并声明一些全局属性,这当然很容易,但进行此计算并不是问题的重点。我的目标是学习如何以声明方式执行此操作。如何QQuickItem::x根据QQuickItem::x的当前值本身对 a 应用计算..

如果您运行这个问题中的示例代码,您会看到它my_rect_1只是在 2 个位置之间来回交换,这不是逻辑的真正意图。逻辑的目的是保持递增my_rect_1::x,并保持my_rect_1::y一定的因子,my_rect_1当您继续单击另一个矩形时,这将导致向右和向下移动my_rect_2

另一个问题是,当我单击时,我在运行时
不断收到以下错误my_rect_2

我知道QML是在抱怨属性的循环x依赖my_rect_1。我怎样才能避免这种情况并实现转换的声明方式xand y

我从搜索中找到的
潜在解决方案

如何在不编写在外部单独进行此转换的 QML 函数的情况下实现此行为 my_rect_1

0 投票
1 回答
608 浏览

qt - 是否可以获得 QQuickItem 布局更改事件?

QQuickItem 布局是否有可能发生变化?

有没有办法在布局/大小(x、y、宽度或高度)改变时触发功能?

有办法连接每个属性信号变化,但这不是正确的方法。

已经尝试过 windowChanged 信号,但它不适用于此。

我想要做的是每次我的 QQuickItem 布局/大小(其中任何一个)更改时调用提供 x(GLOBAL),y(GLOBAL),width,height 的外部 java 函数。

编辑:渲染完成后我需要知道几何图形。所以我不能单独连接到每个属性。

0 投票
0 回答
176 浏览

c++ - 当 contentwidth 很大时,Flickable 中的 QQuickPaintedItem 变得模糊

我有一个继承的类,QQuickPaintedItem我用它paint()来绘制音频波形。

绘图完成后,我会调整包含我创建的 qml 元素的contentWidth大小。FlickableqmlRegisterType

内容越大contentWidth越模糊。我也从不依赖 contentWidth 进行绘制,并且在更改时不调用 paint()并且在qml 文件中硬编码contentWidth时效果是相同的。contentWidth

我对 Qt 不是很有经验,我想知道它是否是开始绘制波形的最佳方法,我可以滚动浏览、放大并与之交互,以及为什么Flickable增加contentWidth.

我尝试了所有明显的东西,例如将渲染提示设置为抗锯齿等。

0 投票
1 回答
152 浏览

qt - Qt:如何获取 QQuickItem 的快照,将其子 QQuickItems 从获取的结果中剔除

我的问题是对这个讨论的跟进。

的。以下方式grabToImage可以让我获得任何特定的快照,QQuickItem如下parent_rect所示。

问题:
但这grabToImage也让我得到了它所有孩子的快照,即child_rect1child_rect2

问题:
如何在parent_rect不将其子项添加到返回结果中的情况下获取 only 的快照?

0 投票
1 回答
410 浏览

qt - 等价于 QObject::findChild 函数的 qml-child-items

T QObject::findChild允许您按类和名称在子项中搜索特定对象:

我需要按类和名称找到这样的子项。就像是

但该函数不存在QQuickItem
实现这一目标的最方便/有效的方法是什么?

到目前为止,我只能考虑QQuickItem::childItems列表中的一个循环。

0 投票
1 回答
1208 浏览

c++ - 直接用QPainter绘制和绘制QPixmap给出不同的结果

有一个简单的类基于QQuickPaintedItem

paint()函数只做两件事:直接绘制一个矩形QPainter并绘制QPixmap包含相同矩形的矩形。但是如果我在构造函数中设置渲染目标FramebufferObject,这些矩形由于某种原因不匹配。如果我评论这个字符串,一切都很好。

FramebufferObject

使用 FramebufferObject

没有 FramebufferObject

没有 FramebufferObject

您能解释一下为什么会发生这种情况以及如何处理吗?

0 投票
0 回答
220 浏览

qt - 如何将 QtQuick 项目渲染到纹理中

我有一个自定义QQuickFramebufferObject节点,可以在某些几何图形上呈现纹理。现在我想将一个 Qml 项目渲染到一个纹理(例如QOpenGLTexture)并在我的自定义节点中使用这个纹理。我知道有grabToImagehttp://doc.qt.io/qt-5/qquickitem.html#grabToImage)方法,但是这种方法很慢,因为它首先将所有内容呈现为 QImage 并且必须从/到传输数据显卡。

详细地说,我正在寻找类似ShaderEffectSource元素但可以直接访问纹理 id 的东西,它可以用作QQuickFramebufferObject. Qt 中是否已经为这种情况实现了一些东西?

0 投票
1 回答
921 浏览

c++ - 如何从 C++ 端连接到 QML 项目的 onClick 事件

场景:
我有一个在Qt 5.9.4商业版上运行的Qt 应用程序。它是一个基于iOSAndroid的应用程序。QtQuickQML

QML在 UI 上有一个项目,如下所示:

我有一个 C++ 函数,可以轻松控制SomeItem.

问题:
我想someItem在 C++ 方法或 lambda 中监听 onClick 事件,而不更改 QML 中的任何内容。基本上连接到someItem来自 C++ 端本身的 onClick 信号信号。我该怎么做?