问题标签 [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.
qt - 如何将具有自定义属性的组件移动到 QML 中的单独文件
我有一个语言选择列表的代表。列表中的每个项目都包含一个图标和文本。我想将组件定义移动到不同的文件,并提供当前由 IMGDIR 定义的字符串作为属性。
只需将下面的整个文本移动到单独的 LandDelegate.qml 文件中,并将其包含为:
不起作用。
下面是组件的声明。
qt - QML 的 Component 和 Instantiator 的区别?
QML 类型Component
和Instantiator
似乎做类似的事情;按需创建 QML 对象,而不是在解析其定义时。 那么有什么区别呢? 为什么我要使用其中一个?
qt - QML:未在单元测试中调用信号
我正在编写一个ScriptProcess
用于 QML 的 C++ 类,它充当子进程的接口。所述子进程加载脚本,然后按需执行功能。当您调用函数时,结果(无论是值还是异常)通过信号异步返回。
简而言之,我执行以下操作:
- 对于每个测试,打开辅助进程并从文件加载脚本。这是通过使用通过属性
Component
给出的脚本实例化 a 来完成的。ScriptProcess.code
- 运行测试。
- 测试完成后,终止进程并删除管理它的对象。
我的问题是SignalSpy
被叫exceptionSpy
没有被触发;exceptionSpy.count
总是零,我不知道为什么。 为什么会这样?我是在滥用SignalSpy
还是Component
?
qt - 退出鼠标区域时无法取消拖动
我有一个滑块和一个用于在滑块上滑动的图像,如下所示。
mouseArea 看起来像这样:
当我按住 sliderImage 并将其滑动到滑块区域之外时,我想取消拖动。拖动区域应限制在鼠标区域。如果我们移出鼠标区域,我想取消拖动。但是 Drag.cancel() 并没有取消拖动。有什么办法可以取消拖拽吗?
qt - 无效的分组属性访问
在这个 qml 代码中:
PictureBox
来自PictureBox.qml
系统文件的方式是这样的:
运行qml,我在标题中有错误。我需要使用PictureBox.qml
,但我无法更改它。如何覆盖PictureBox.qml
图标的默认高度值?
c++ - QML 错误:qrc:/Main.qml:24 模块“系统”未安装
我是 QML 的新手,我有一个项目。在我的一个目录中,我有一个/imports/system/qmldir
文件,其中有以下代码:
在我的源文件中我有
并且错误说没有安装模块系统。
你能告诉我安装模块的步骤或流程吗?
c++ - 从 C++ 设置 GridView 模型属性而不设置上下文
我正在尝试通过调用从 C++设置model
QML 的属性。GridView
QQmlProperty::write(gridview, "model", QVariant::fromValue(objlist));
gridview
设置正确,我可以从 C++ 修改属性,当我将其设置为具有 6 个条目的 QList 并从我得到的 QML 打印它们时
qml: model = item(0x30617b50), Item(0x30617b90), Item(0x30617bd0), Item(0x30617c10), Item(0x30617c50), Item(0x30617cd0)
,尽管没有显示模型。
Qt 文档建议调用
QQmlContext *ctxt = view->rootContext();
ctxt->setContextProperty("gridModel", QVariant::fromValue(objlist));
然后使用 QML 设置属性,model: gridModel
但这并不真正适合我的需要。它工作正常,只要设置了属性,就会显示正确的数据。当我从 QML 打印变量时,输出是
qml: model = [object Object]
设置上下文属性和设置对象属性之间肯定存在差异,但我不知道如何解决这个问题。
qt - 如何制作一些可重用的 QML 对象,它可以注入另一个 QML 对象?
如何制作一些可重用的 QML 对象,它可以注入另一个对象?
我曾经尝试过使用Component
& Loader
,但似乎不是我想要的。(它仍然封装了整个 QML 类型,缺乏弹性,难以重用)
使用示例:
Card.qml
main.qml
c++ - 如何在 C++ 端获取有效的 QQuickItem 实例
好吧。我已经搜索了很多,但还没有一个好的解决方案。我是新手Qt
。我有一堂课是QQuickItem
这样的,
我qmlRegisterType
在我的旁边做一个这样的main.cpp
注册,qml
qmlRegisterType< MyQuickItemClass >("MyQuickItemClass", 1, 0, "MyQuickItemClass");
到这里为止一切都很好。但是->我想在 MyQuickItemClass 中设置一个对象实例和一些属性,其中还有一些 C++ 逻辑,然后将MyQuickItemClass
对象传递给qml
. 或者,MyQuickItemClass
从 Qml 获取一个有效的实例。如何从C++ 端获取 vlid 实例MyQuickItemClass
对象实例?QML
main.cpp
我尝试从此处的链接中进行以下学习。但是这种技术会创建两个独立的MyQuickItemClass
. 一个来自QML
,一个来自c++
侧面。因此对我不起作用。
以下是我经过大量搜索后尝试执行此操作的方法。
但是,执行上述操作会MyQuickItemClass
调用两次的构造函数。cpp
当我创建一个对象时,一次是从侧面,一次是从侧面qml
。通过在构造函数中放置断点来验证这一点MyQuickItemClass
。结果,我在程序运行时someCppClassObject
设置的内部为空。因为 qml 已经对实例化MyQuickItemClass
进行了最后调用,因此忽略了我在.MyQuickItemClass
MyQuickItemClass
main.cpp
这是我的qml
代码MyQuickItemClass
:
这是 C++ 类,其对象需要设置为MyQuickItemClass
.
请注意,我需要保持MyQuickItemClass
从QQuickItem
. 请建议...
qt - 如何在 qml 中使用加载表单中的鼠标单击区域?
下面是我的代码片段,我正在使用动态对象创建方法加载 qml ui 现在我必须实现驻留在加载文件中的 mousearea,任何人都可以帮我这样做