问题标签 [qqmlcontext]

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 投票
0 回答
879 浏览

qt - 更改 QML 对象的 QQmlContext?

显然,即使对象从现有的父级分离并附加到新的父级,当旧的父级上下文被销毁时,对象也是如此。

想到的第一个解决方案是在持久上下文中创建对象。但是,动态范围属性将不适用于它。这对我的用例至关重要。如果对象不在它的父对象的上下文中,并且父对象发生更改,我将无法运行。此外,即使目标对象具有函数,也不能再调用函数,因为 QML attempted to evaluate a function in an invalid context.

试图诉诸QQmlEngine::setContextForObject()QQmlEngine::contextForObject()只是发现一旦设置,上下文就无法重置。

那么,有什么新鲜想法吗?

0 投票
0 回答
1121 浏览

c++ - Qt - 如何从 C++ 类动态插入 Qml 对象

我需要关于我的简单QT/QML应用程序的建议。

我有以下情况:

关于界面,我有一个名为“flickableArea”(flickableArea.qml)的主要区域,分为四个区域(item slot1、item slot2、item slot3和 item slot4)。

每个插槽都填充有 QML Rectangle 对象。

slot1由 id= area1的矩形填充,slot2由 id= area2的矩形填充,slot3由 id= area3的矩形填充,slot4由 id= area4的矩形填充

文件flickableArea.qml

当在 c++ 代码中触发定义的信号时,我应该在area1area2area3area4中动态插入 QML 对象。在 c++ 代码上,当信号被触发时,我运行以下代码来创建一个连接到 Object.qml 的新对象 (ObjectToIntroduce):

在我创建了一个新的 ObjectToIntroduce 之后,如何在 flickableArea.qml 的 area1/area2/area3/area4 中引入/销毁(查看/隐藏)Object.qml?

我想知道实现这种机制的最佳方式是什么,编写这个简单的 Qt/Qml 应用程序。感谢您的建议,最好的问候

乐乐

0 投票
1 回答
259 浏览

c++ - 我可以从 C++ 访问包含 QtObject 的 QQmlContext 吗?

我有一个 sorta-singleton 辅助对象,但是,我不想成为一个真正的单例,因为我更喜欢将东西放在堆栈/堆上。所以我在堆上创建了它,并将它设置为我的根QQmlContext的contextProperty。我还有一个 C++ 中的 QObject 子类,它在 QQmlContext 的对象树中实例化。

我可以从 C++ 访问包含 QObject 的 QQmlContext 以访问相关的 contextProperty 吗?

我知道我可以做这样的事情:

但这意味着我必须始终使用“cp:_cp”样板来阻塞我的 MyQObjectSubclass QML 实例。

0 投票
1 回答
95 浏览

c++ - 设置 QML 上下文失败

我正在尝试将 C++ 类连接到 QML,但我遇到了一个问题,编译时出现以下错误。

我正在添加图像以显示错误:

我正在使用一个简单的类来测试我的代码是否有效,这是代码 testing.h:

和 testing.cpp:

和 main.cpp:

和 main.qml:

0 投票
1 回答
918 浏览

c++ - 将数据从 c++ 加载到 QML Scatter3d 项

我正在尝试开发示例“qmlscatter”的修改版本,可在 Qt 示例中使用。我的目的是通过修改“Data.qml”文件的数据点,在 3D 环境中绘制飞行轨迹。飞行路径的实际坐标存储在三个不同的QVectors QVector<double>“cogPosX_”、“cogPosY_”和“cogPosZ_”中,每个索引代表后一个时间步长。

正如论坛提到的,我需要使用“.setContextProperty”函数来更新 QML 文件中的数据值。但是,我无法真正找到如何让它工作。我想主要原因是我没有引用正确的“dataModel”id。这里有我的代码:

datapointobject.h // 这应该定义一个通用对象,其中包含每个数据点的 XY 和 Z 坐标。

datapointobject.cpp // 这定义了构造函数和函数。

threeDviewer.h // 这个头文件定义了“Flightviewer”类,它创建了一个 QQuickView 实例,负责绘制 3D 散点图。

threeDviewer.cpp //这个文件配置QQuickView viewer实例。它负责将航班数据导入到 QML 数据文件中。

'QQuickViewer viewer' 在外部函数中初始化,使用以下命令:

qml 文件中的数据与“qmlscatter”示例中的定义完全相同:

数据.qml:

数据由定义 Scatter3D 项的 main.qml 文件访问:

main.qml

如果您能给我一些有关如何正确编程的提示,我将不胜感激。预先感谢!

0 投票
1 回答
506 浏览

c++ - 向 QML 公开 C++ 对象并监听更改事件

我有一个在 C++ 中定义的对象,并且正在尝试向 QML 公开一个成员字符串。该类定义为:

所以我试图将mFoo对象公开给 QML。现在,我将应用程序上下文设置为:

现在在我的 qml 中,我怎样才能听到我公开的字符串的变化。所以我想要一个每次mFoo成员发生变化时都会调用的监听器方法。

0 投票
1 回答
1267 浏览

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

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

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

主文件

场景.h

场景.cpp

main.qml

myrect.qml


更新

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

main.qml

customitem1.qml

0 投票
1 回答
66 浏览

qml - FileDialog(QtQuick Object)中实例化一个c++类,报错:Cannot assign object to property

代码:

我很好地编译代码并运行,然后得到如下错误:

QML 调试已启用。只能在安全的环境中使用。(爬取:这是另一个问题,您可以忽略)

QQmlApplicationEngine 加载组件失败

qrc:/main.qml:22 无法将对象分配给属性

而另一个组件,如PageWindowButton,可以实例化 C++ 类。怎么了?

0 投票
1 回答
192 浏览

c++ - 是否可以列出 QQmlContext 的上下文属性名称?

我想知道是否可以获得特定的所有上下文属性名称QQmlContext

所以我可以做类似的事情:

QObject我为's with obj->metaObject()->propertyCount()and then实现了类似的功能obj->metaObject()->property(i)

0 投票
1 回答
360 浏览

qt - 将 c++ 发出的信号连接到 qml 连接

我正在从 c++ 发出信号并尝试使用 qml 中的 Connections 获取值。然而,代码正在编译,由于某些未知原因,qml 无法识别“ OnSomethingHappened ”,并且从 c++ 发出的信号是“ somethingHappened ”。

我知道可以有其他解决方案,但我需要在 qml 中使用连接。这是因为 qml 中使用的架构。

qmlclient.h

qmlmqttclient.cpp

主文件

main.qml

在运行上面的代码控制台显示