c++ - Qml property of custom type -
i have class defined follows:
class set : public qobject { q_object … };
it's qmregistertype'd , usable within qml. i'd have in class property of custom type setrange, defined follows:
class setrange : public qobject { public: setrange ( qobject *parent = 0 ) : qobject::qobject(parent) { } q_property(int lowerbound member lower_bound write setlowerbound notify lowerboundchanged) q_property(int length member length write setlength notify lengthchanged) int lower_bound, length; void setlowerbound ( int lower_bound ) { if ( lower_bound != this->lower_bound ) emit lowerboundchanged(this->lower_bound = lower_bound); } void setlength ( int length ) { if ( length != this->length ) emit lengthchanged(this->length = length); } signals: void lowerboundchanged ( int lower_bound ); void lengthchanged ( int length ); }; q_declare_metatype(setrange)
and property within set:
q_property(setrange range read range write setrange notify rangechanged) void setrange ( setrange const &range ); setrange range ( ) const;
i expect use in qml follows:
set { … range: range { lowerbound: … length: … } }
currently have compile-time errors: use of deleted function: setrange::setrange(setrange&&) should proper way declare custom type able use property of type both in c++ class , in qml? type qmlregistertype'd too.
update: works without q_declare_metatype if property range declared setrange* (pointer setrange) , other code modified accordingly. should qml property of custom type pointer type?
if custom property type setrange
derived qobject
not copyable pointed out in comment @vercetti, property range
can not use setrange
type because function setrange()
not work.
one solution use pointer setrange
type property range
, have suggested:
q_property(setrange * range read range write setrange notify rangechanged)
i have been using solution in of custom property types derived qobject. works, , standard coding pattern me.
Comments
Post a Comment