问题标签 [qqmlcomponent]

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 回答
495 浏览

initialization - 不使用 SetContextProperty 的已加载 QML 组件的 SetProperty

我有一个 C++ 插件系统,其中创建了 QQmlComponent 并在用户请求新插件实例时加载了 qml 文件。

目前我正在使用 setContextProperty() 来告诉 QML 正确初始化所需的 QObject。

问题是,在实例化第二个插件时,两者都将使用第二个插件的控制器,因为“控制器”在 QML 中是全局的。

有没有办法在本地设置上下文属性(仅适用于当前实例)?

我找到了使用 setProperty() 或 QQmlIncubator 和 setInitialState() 的解决方案,但它们似乎都需要一个已经从我的组件创建的对象。但在我的插件中,我只定义了组件,该组件通过 Loader 项加载到主应用程序中。因此,在尝试这些方法时,我总是在项目的副本中设置值,而不是在我的后端创建的那个。

如何访问在 QML 中创建的组件的属性?

即使我在 MyPlugin.qml 中定义了该属性,也不会给我任何结果。

0 投票
1 回答
442 浏览

qt - 如何将 X 和 Y 转换值应用于 C++ 端的 QQuickItem

我有以下QML Rectangle具有父项的内容。需要注意的最重要的事情是它应用了一个Translate QML 元素,我正在努力理解它究竟对 QML 项及其应用的子项做了什么。

代码:

rect_parenttransform: Translate如您在上面的代码中所见,有一个属性。以下是应用于它的 XY 平移

在我的代码的 C++ 部分中,我通过以下方式main.cpp获取QQuickItems 。

是的,我可以通过以下方式获得xand yrectQuickItem

问题:
但是我如何得到rectQuickItem翻译的 x 和 y?
我发现这并不是 UI 上实际应用的 x 和 y item_xitem_y这似乎transform: Translate是向 x 和 y 添加了一些rect我在查询时没有得到的单位rectQuickItem->x()

用更简单的话来说,我需要-20and-30应用于 x 和 ytransform: Translate块中rect_parent,最终适用于rect

目标:
我正在更改父rectQuickItem以将其显示在另一个窗口上,其 x 和 y 位置与原始父级相同。我需要添加到属性的单位xy属性,rectQuickItem以便在视觉上与前一个父级相同的位置transform: Translate显示。rect

附加问题:
QQuickItem ::MapToItem会以任何方式帮助我吗?

0 投票
1 回答
1082 浏览

python - 将属性注入 QML 组件

我对 Qt/PyQt 相当陌生,目前正在努力使用一些基本功能。我想要做的是,从 python 动态加载 QML-Views (*.qml) 文件并动态替换特定内容。例如,一个复选框被选中,我当前视图的一部分被另一个 qml 文件替换。首先,我想通过 PyQt 提供这个逻辑,但似乎 StackView 是一个更好的主意(pyqt 中有多个 qml 文件)。

但是,在这种情况下,我无法将属性注入到我的 QML 文件中。我只能将一个属性注入到 rootContext 中。然而,这限制了我的 QML 视图的使用,因为我一次只能使用一个视图(相同类型)。我想将属性动态注入到 QML-Views 中,并使它们只对这个特定的视图可见。在这种情况下,我可以在后端使用多个对象多次使用同一个视图来捕获信号。

这是我的 SimpleMainWindow.qml 文件(主视图:

这里是我尝试加载的文件(TestViewButton.qml):

Python文件加载QML-View(组件)

还有我用来处理来自视图的信号的python对象(SignalHandler.py):

按钮加载正常(顺便说一句,有没有更好的方法来识别我想要添加按钮的父级,没有使用 findChild 的任何外观)。不工作的是 component.setProperty.... 部分。如果我在引擎的 rootContext 中设置属性,它可以正常工作(调用 SignalHandler 方法)。已经检查过类似的主题(比如从另一个 qml 文件动态加载一个 qml 组件并访问该组件的 qml 类型属性......)

这是可能的,还是我这里有问题?

谢谢

0 投票
1 回答
1065 浏览

c++ - Dynamically created Custom QML object not visible

I have a custom QML item called "Cell.qml" which I'd like to insert dynamically in my root window and make it visible. I also tried changing the z property, but I couldn't fix it, the object is still invisible (even tough the output of root->dumpObjectTree() says the object exists as a child of the root window)

This is the result after executing the code

main.cpp

main.qml

Cell.qml

Output of root->dumpObjectTree();:

0 投票
1 回答
1008 浏览

qt - Qt:Qml:创建对话框时关注文本字段

我有一个包含两个文本字段的简单对话框。我想在对话框出现labelField时让文本字段聚焦。AddPasswordDialog我怎样才能做到这一点?

我问了这个问题,并被要求提供一个 MCVE,我在这里提供它。如果您需要,请询问更多信息。

main.qml

HomeForm.qml

AddPasswordDialog.qml

main.cpp

0 投票
1 回答
98 浏览

c++ - 是否可以从 C++ 创建 Qml 组件?

有没有办法从 C++ 创建/附加 QML 组件?

例如,如果我有这个 QML:

TextInput是否可以在矩形上附加一个?

0 投票
1 回答
42 浏览

qt - QML 嵌套项的名称

我正在尝试使用 QQmlComponent 解析 QML 文件:

但我还需要 QML 源代码中提到的每个子项的名称。对于 root,它是“MyModel”,但如何为孩子们获取它?objectName对他们来说是空的。

0 投票
4 回答
1764 浏览

c++ - 如何在一个 qt qml 窗口中运行和显示 4 个可执行文件?

我有 4 个不同的可执行程序,您可以认为它们是相同大小的空矩形窗口,我想在一个 qt qml 窗口中运行这些 exe。

在此处输入图像描述

a、b、c、d 是固定相同大小的不同可执行文件,x 是用 qt5.11/qml quick2 编写的窗口,我如何在 qt/qml 项目中做到这一点,有什么想法吗?

我正在尝试使用窗口容器,但没有进展。该 exe 正在将其窗口 ID 写入文本,而我正在读取该文本。

0 投票
1 回答
1267 浏览

c++ - 从 c++ 对象动态创建 qml 对象(使用 setContextProperty)

我正在尝试使用 c++ 类的对象在 c++ 中动态创建一个 qml 对象。下面是我的方法的最小代码。执行此代码并单击后,应用程序崩溃(请参阅 main.qml 中的注释)。

我已经粘贴了下面的代码,可以在这里下载。

主文件

场景.h

场景.cpp

main.qml

myrect.qml


更新

要创建的对象不是主窗口根的子项,而是主窗口根的子项链中的一项的子项。伪结构如下所示。

main.qml

customitem1.qml

0 投票
0 回答
151 浏览

qt - 在布局中指定动态创建的 QML 组件的索引?

我正在使用 Javascript 通过以下方式动态创建 QML 组件:

在这种情况下, parentLayout 是 aColumnLayout并且它总是在子列表的末尾创建对象(这意味着它显示在列的底部)。

如何在放置对象的子项中指定索引位置,或者如何在实例化后的子项列表中移动它?

(我尝试分配parentLayout.children[i]无济于事)

用例:我有一个大型的现有多级(嵌套)菜单系统,它是静态的,但我想在层次结构中插入和删除自定义子菜单项,以响应通过服务 API 注册/注销的外部插件。虽然我们可以将菜单系统完全重新实现为动态树视图,但动态插入几个菜单子项似乎有点过头了。