- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在制作我自己的外观和功能类似于 qt 的设计器小部件。但现在我需要知道属性是如何创建的。我知道我们可以使用 QMetaObject
和 QMetaProperty
获取小部件的属性,但我的问题是我能否获取每个属性的类名。比如对象名称属性来自 QObject
,geomentry 属性来自 QWidget
。是这样我应该对自己进行硬编码来建模还是有办法从属性中获取 classInfo。我附上了我试图获得任何回应或相关帖子的图片。
谢谢,
最佳答案
为了在类及其属性之间创建映射,您需要遍历对象的类层次结构。下面是创建此类映射的示例代码:
// Create properties per class mapping for the initialObject.
const QMetaObject *mo = initialObject->metaObject();
QMap<QString, QStringList> propertyMap;
do {
QStringList properties;
for(int i = mo->propertyOffset(); i < mo->propertyCount(); ++i) {
properties << QString::fromLatin1(mo->property(i).name());
}
propertyMap[mo->className()] = properties;
} while (mo = mo->superClass());
现在 propertyMap
包含所有按它们所属的类名排序的属性。
关于c++ - 来自 QMetaProperty 的类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23359215/
我不确定这样的事情是否可行,但我正在尝试根据已注册到 Qt 属性系统中的属性动态生成 GUI。我的假设是,由于我以这种方式使用 Q_PROPERTY() 注册了一个属性: Q_PROPERTY(pro
我正在制作我自己的外观和功能类似于 qt 的设计器小部件。但现在我需要知道属性是如何创建的。我知道我们可以使用 QMetaObject 和 QMetaProperty 获取小部件的属性,但我的问题是我
我有一个类 ObjectA class ObjectA : public QObject { Q_OBJECT Q_PROPERTY(int _a READ a WRITE setA
我正在尝试创建一个自定义QQuickItem来在我的应用程序中显示图表。我的 C++ 版本可以工作,但我的 Python 版本无法工作。我相信这是因为 Q_DECLARE_METATYPE 和 qRe
Qt 不允许注册类模板? 我的类层次结构是 TreeItemTemplateBackend : public QObject template TreeItem : public TreeItemTe
我是一名优秀的程序员,十分优秀!