问题标签 [qmetaobject]
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 元对象实例?
给定类名,有没有办法找到类的 QMetaObject 实例?我喜欢做的是从磁盘加载对象,但要做到这一点,我需要一种使用类名检索 QMetaObject 实例的方法,以便使用 QMetaObject 创建实例。
c++ - 没有要调用的匹配函数 - 编译器说当调用是 (QObject *) 时我调用 (QObject *&)
这是代码:
这是错误:
我错过了什么?我invokeMethod()
用指针调用,但编译器抱怨它是指针引用。
c++ - 来自 QMetaProperty 的类名
我正在制作自己的设计器小部件,其外观和功能都类似于 qt。但现在我需要知道该属性是如何创建的。我知道我们可以使用获取小部件的属性,QMetaObject
但QMetaProperty
我的问题是我能否获取每个属性的类名。就像对象名称属性来自QObject
和几何属性来自QWidget
。是这样我应该硬编码自己建模还是有办法从属性中获取classInfo。我已附上我试图实现任何响应或相关帖子的图像。
谢谢,
qt - 如何使用 QObject 派生类实例遵循 OOP 基本概念?
大家好...我使用 Qt 的时间不长,但最近我想到了一个想法。
QObject
具有公共函数children()
和其他一些函数,它们返回指向子对象的指针。所以自定义类的任何客户端都可以打破封装。
如何保护我的代码免受这种野蛮对待?
为什么 Qt 开发人员将这些功能留在公共部分?他们试图达到什么目的?
我能想象到的关于此类函数的唯一一个论点与 Qt 中的“垃圾收集”有关(当一个删除父QObject
派生类实例时,所有子实例都会被自动删除)。但我认为这可以通过 Qt 的metaObject
系统来完成(我不确定机制,但是,在我看来,对子对象的访问不应该是公开的)。
- 另外,考虑当有人试图在单独的线程中使用子对象时的情况,这在 Qt 中是被禁止的......但我没有看到使用
QObject::children()
.
//------------------------------------------------ ------------------------------------------------
根据一些评论进一步解释:
虽然您可以访问QObject::children()
班级的私人成员,例如
无需将成员 m_lbl1 声明为私有成员:
这是非常糟糕的。因为如果您的解决方案中至少有 10^5 行代码并且超过 1 个开发人员,迟早有人可以手动更改任何子成员的状态MyClass
,您可以实现任何类型的错误(例如,根据实施MyClass
)。
@Merlin069:pImpl 是 Qt 开发中的常用方法吗?
c++ - 在 Qt C++ 中枚举 QML 属性?
我正在执行以下操作以在我的 Qt 嵌入式应用程序中呈现 QML:
有没有办法可以枚举根项中定义的所有属性值?
例如,如果我有 QML:
是否有一个 Qt 方法最终会让我拥有这些字符串的列表:
我试过,以下,但它的列表是空的:
提前致谢!
c++ - 使用 QMetaProperty 进行自省
我有一堂课ObjectA
和班级ObjectB
我想做一个这样的信号/插槽连接
只知道名称的属性。
但是
metaPropertyA.notifySignal().methodSignature()
不返回函数的指针,我也不知道如何获取 set 方法指针。
c++ - Q_PROPERTY WRITE 获取索引
我有这个属性:
我只知道物业的名称_a
。我想得到方法的索引setA
。
qt - 编译器错误 C2248:'QObject::Qobject':无法访问在类 'QObject' 中声明的私有成员
大家好,我有一个 foo 课
foo.h 中的代码
现在这工作和编译正常,但我想使用 QSettings 保存这个自定义 c++ 类,其中一个步骤是注册你的类Q_DECLARE_METATYPE
因此,只要我将此行
Q_DECLARE_METATYPE(Foo)
放在 foo.h 文件的末尾,我就会得到这些编译器错误 C2248:'QObject::Qobject':cannot access private member 在类'QObject'中声明,单击时只会带我去我的 connection.h 头文件的最后一行,并且没有提供关于可能出现什么问题的其他信息,即错误指向我
我知道 QObject 不能被复制,这与它有关,但我不知道这里可能有什么问题以及如何纠正它。提前致谢
qt - 尝试使用 QSettings 序列化 QObject 类时读取访问冲突
大家好,我有一个继承自 QObject 的 foo 类,我想使用 QSettings 进行序列化。foo.h 中的代码
Foo.cpp 中的代码
main.cpp 中的代码
现在编译正常但是当我调试它时,我得到异常触发的读取访问冲突
需要注意的重要一件事是,如果我将朋友功能更改为
我确实在 var1、var2 和 var3 中得到了正确的值。
有人可以告诉我我做错了什么,我该如何纠正它提前谢谢
c++ - Qt metaObject->indexOfMethod 总是返回 -1
我在Foo
课堂上声明了一个函数:
Q_INVOKABLE void setImageUrl(const QString &imageUrl);
但是我无法获得该方法的功能索引:
我错过了什么?