For me, under Android target, it does fail for the linking. I was trying to add and interface for injecting property into object expose to Qml. I often want to add a subset of property to a model and I would have want to have to rewrite the same Q_PROPERTY() and changed signal over and over again.
But I guess I will stick with the ugly macro mess for now. Would be nice to have a way to extend a QObject with defined class of property with get/set and changed signals that is not a QObject to avoid diamond inheritance since it could already inherit another QObject class. For example I would have love to have interface for the dirty property so I could inject the property on many qobjects types I have without rewriting it every time. I can make the get/set/ protected value, but I still have to create the signals/slots/Q_PROPERTY every time. I use some macro but I find that ugly and error prone to forget one. From: Konstantin Shegunov <[email protected]> Sent: November 30, 2018 4:29 PM To: Jérôme Godbout <[email protected]> Cc: Interests Qt <[email protected]> Subject: Re: [Interest] Interface with signals and slots Hi, This compiles for me: class SignalInterface { public: virtual void mysignal() = 0; }; class SignalImplementer : public QObject, public SignalInterface { Q_OBJECT signals: void mysignal() override; }; However putting signals into an interface I think is rather dubious, because you won't be able to connect through the interface. I.e. this: SignalImplementer obj; QObject::connect(this, &Session::opened, &obj, &SignalInterface::mysignal); Is going to fail the static assertions in QObject::connect. You could derive from QObject though and have them in an abstract class.
_______________________________________________ Interest mailing list [email protected] https://lists.qt-project.org/listinfo/interest
