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

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -