41 #include <QApplication>
68 void slotPropertyDestroyed(
QtProperty* property);
78 QMap<const QtProperty*, Data> propertyToData;
79 QMap<const QtProperty*, QtProperty*> xToProperty;
80 QMap<const QtProperty*, QtProperty*> yToProperty;
88 SLOT(slotValueChanged(
QtProperty*,
const QVariant&)));
100 VariantManager::slotValueChanged(
QtProperty* property,
const QVariant&
value)
102 if (xToProperty.contains(property))
104 QtProperty* pointProperty = xToProperty[property];
105 QVariant
v = this->
value(pointProperty);
106 QPointF p =
v.value<QPointF>();
107 p.setX(
value.value<
double>());
110 else if (yToProperty.contains(property))
112 QtProperty* pointProperty = yToProperty[property];
113 QVariant
v = this->
value(pointProperty);
114 QPointF p =
v.value<QPointF>();
115 p.setY(
value.value<
double>());
121 VariantManager::slotPropertyDestroyed(
QtProperty* property)
123 if (xToProperty.contains(property))
125 QtProperty* pointProperty = xToProperty[property];
126 propertyToData[pointProperty].x = 0;
127 xToProperty.remove(property);
129 else if (yToProperty.contains(property))
131 QtProperty* pointProperty = yToProperty[property];
132 propertyToData[pointProperty].y = 0;
133 yToProperty.remove(property);
153 return QVariant::PointF;
162 if (propertyToData.contains(property))
164 return propertyToData[property].value;
173 if (propertyToData.contains(property))
175 QVariant
v = propertyToData[property].value;
176 QPointF p =
v.value<QPointF>();
177 return QString(tr(
"(%1, %2)").arg(QString::number(p.x())).arg(QString::number(p.y())));
186 if (propertyToData.contains(property))
188 if (val.type() != QVariant::PointF && !val.canConvert(QVariant::PointF))
193 QPointF p = val.value<QPointF>();
194 Data d = propertyToData[property];
199 d.x->setValue(p.x());
204 d.y->setValue(p.y());
207 propertyToData[property] = d;
223 d.value = QPointF(0, 0);
228 d.x->setPropertyName(tr(
"Position X"));
229 property->addSubProperty(d.x);
230 xToProperty[d.x] = property;
233 d.y->setPropertyName(tr(
"Position Y"));
234 property->addSubProperty(d.y);
235 yToProperty[d.y] = property;
237 propertyToData[property] = d;
246 if (propertyToData.contains(property))
248 Data d = propertyToData[property];
252 xToProperty.remove(d.x);
257 yToProperty.remove(d.y);
260 propertyToData.remove(property);
269 QApplication app(argc, argv);
274 item->
setValue(QPointF(2.5, 13.13));
286 int ret = app.exec();
288 delete variantFactory;
289 delete variantManager;