问题标签 [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 - Qt:如何在 C++ 端而不是 QML 上监视 Q_PROPERTY 更改
我正在使用 Qt 5.9.3。我在我的应用程序中声明了以下属性main.qml
代码:
问题:
如何onNextColorChanged
在 C++ 端定义?
我知道我也可以nextColor
在 C++ 类中作为属性MyQuickItem
。像这样
OnNextColorChanged
内部可以监控MyQuickItem
吗?
qt - 如何将 QQuickItem 的中心转换为新中心
我有一个 Qt QML 应用程序。以下是应用程序的完整代码:
代码:
问:
我的问题很简单。如何将任何中心更改QQuickitem
为新中心?因此,在上述情况下,当获得点击事件
时,如何将中心更改为my_item_1
新中心(Qt.point(some_x_center, some_y_center) )。另外,是否有可能获得另一个项目的中心?Like或'center 申请到的目标?my_item_2
app_main_window
my_item_2
my_item_1
PS:
我已经简化了代码以使问题客观。my_item_1
我的实际代码中有一个相当复杂的逻辑,我需要在不使用锚点的情况下将某些东西重新对齐到一个新的中心,因为QQuickitem
我试图用它来缩放并平移到一个新点。
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
。我怎样才能避免这种情况并实现转换的声明方式x
and y
?
我从搜索中找到的
潜在解决方案
如何在不编写在外部单独进行此转换的 QML 函数的情况下实现此行为 my_rect_1
?
qt - 是否可以获得 QQuickItem 布局更改事件?
QQuickItem 布局是否有可能发生变化?
有没有办法在布局/大小(x、y、宽度或高度)改变时触发功能?
有办法连接每个属性信号变化,但这不是正确的方法。
已经尝试过 windowChanged 信号,但它不适用于此。
我想要做的是每次我的 QQuickItem 布局/大小(其中任何一个)更改时调用提供 x(GLOBAL),y(GLOBAL),width,height 的外部 java 函数。
编辑:渲染完成后我需要知道几何图形。所以我不能单独连接到每个属性。
c++ - 当 contentwidth 很大时,Flickable 中的 QQuickPaintedItem 变得模糊
我有一个继承的类,QQuickPaintedItem
我用它paint()
来绘制音频波形。
绘图完成后,我会调整包含我创建的 qml 元素的contentWidth
大小。Flickable
qmlRegisterType
内容越大contentWidth
越模糊。我也从不依赖 contentWidth 进行绘制,并且在更改时不调用 paint()并且在qml 文件中硬编码contentWidth
时效果是相同的。contentWidth
我对 Qt 不是很有经验,我想知道它是否是开始绘制大波形的最佳方法,我可以滚动浏览、放大并与之交互,以及为什么Flickable
增加contentWidth
.
我尝试了所有明显的东西,例如将渲染提示设置为抗锯齿等。
qt - Qt:如何获取 QQuickItem 的快照,将其子 QQuickItems 从获取的结果中剔除
我的问题是对这个讨论的跟进。
是的。以下方式grabToImage
可以让我获得任何特定的快照,QQuickItem
如下parent_rect
所示。
问题:
但这grabToImage
也让我得到了它所有孩子的快照,即child_rect1
和child_rect2
。
问题:
如何在parent_rect
不将其子项添加到返回结果中的情况下获取 only 的快照?
qt - 等价于 QObject::findChild 函数的 qml-child-items
T QObject::findChild
允许您按类和名称在子项中搜索特定对象:
我需要按类和名称找到这样的子项。就像是
但该函数不存在QQuickItem
。
实现这一目标的最方便/有效的方法是什么?
到目前为止,我只能考虑QQuickItem::childItems
列表中的一个循环。
qt - 如何将 QtQuick 项目渲染到纹理中
我有一个自定义QQuickFramebufferObject
节点,可以在某些几何图形上呈现纹理。现在我想将一个 Qml 项目渲染到一个纹理(例如QOpenGLTexture
)并在我的自定义节点中使用这个纹理。我知道有grabToImage
(http://doc.qt.io/qt-5/qquickitem.html#grabToImage)方法,但是这种方法很慢,因为它首先将所有内容呈现为 QImage 并且必须从/到传输数据显卡。
详细地说,我正在寻找类似ShaderEffectSource
元素但可以直接访问纹理 id 的东西,它可以用作QQuickFramebufferObject
. Qt 中是否已经为这种情况实现了一些东西?
c++ - 如何从 C++ 端连接到 QML 项目的 onClick 事件
场景:
我有一个在Qt 5.9.4商业版上运行的Qt 应用程序。它是一个基于iOS和Android的应用程序。QtQuick
QML
我QML
在 UI 上有一个项目,如下所示:
我有一个 C++ 函数,可以轻松控制SomeItem
.
问题:
我想someItem
在 C++ 方法或 lambda 中监听 onClick 事件,而不更改 QML 中的任何内容。基本上连接到someItem
来自 C++ 端本身的 onClick 信号信号。我该怎么做?