我的应用程序提供了在运行时编辑某些QML对象属性的可能性。 是否有可能像Qt设计师那样显示QML属性进行编辑?
例如,我有QML文件
import QtQuick 2.0
Rectangle {
id: circle
color: "red"
border.color: "black"
border.width: 1
/* allow to modificate by user */
opacity: 0.5
width: 16
height: 16
radius: width*0.5
}
创建之后,我想允许运行时用户更改其部分属性。 是否可以使用Qt设计器类/插件/任何东西来显示其属性并允许编辑它们?
我不想重新发明轮子。 :)
答案 0 :(得分:1)
您可以使用以下代码
在CPP中获取QML项目指针QQuickItem * item = engine.rootObjects()。first() - > findChild(" objectNameHere");
然后,您可以使用以下代码遍历其属性
for(int i=0;i<item->metaObject()->propertyCount();++i) {
// Here you can get the name of the property like
qDebug() << "Name" << item->metaObject()->property(i).name();
// Here you can get the type name of the property like
qDebug() << "Name" << item->metaObject()->property(i).typeName();
// Here you can check if it's a double type for example, and get the value and, set the value to ZERO again for example
if(item->metaObject()->property(i).type() == QVariant::DOUBLE) {
// Get the value
qDebug() << "Value" << item->property(item->metaObject()->property(i).name()).toDouble();
// Set the value to ZERO
item->setProperty(item->metaObject()->property(i).name(), 0.0);
}
在几分钟内,您可以创建一个通用的UI,让我们用这种方法修改任何对象的属性,我想