[Interest] Interface with signals and slots
Jérôme Godbout
godboutj at amotus.ca
Fri Nov 30 21:37:53 CET 2018
Hi,
I was wondering if it's even possible to do the following somehow. I'm trying to make an Interface with signals without inheriting the QObject and I have a hard time make this compile properly:
class IMyInterface
{
public:
explicit IMyInterface();
virtual ~IMyInterface();
bool val() const;
void setVal(const bool v);
signals:
virtual void valChanged() = 0;
protected:
bool m_val;
};
Q_DECLARE_INTERFACE(IMyInterface, "IMyInterface")
class MyClass : public QObject, public IMyInterface
{
Q_OBJECT
Q_PROPERTY(bool val READ val WRITE setVal NOTIFY valChanged)
Q_INTERFACES(IMyInterface)
public:
...
signals:
virtual void valChanged() override;
};
Q_DECLARE_METATYPE(MyClass*)
The example is simplified to show my problem, the different class will inherit different QObject type so I cannot inherit 2 different QObject type. It does compile but this fail at link with the moc:
moc_MyClass.obj:moc_MyClass.cpp:vtable for MyClass: error: undefined reference to 'MyClass::dirtyChanged()'
moc_MyClass.obj:moc_MyClass.cpp:vtable for MyClass: error: undefined reference to 'non-virtual thunk to MyClass::valChanged()'
module_demo.obj:module_demo.cpp:vtable for QQmlPrivate::QQmlElement<MyClass>: error: undefined reference to 'MyClass::valChanged()'
module_demo.obj:module_demo.cpp:vtable for QQmlPrivate::QQmlElement<MyClass>: error: undefined reference to 'non-virtual thunk to MyClass::valChanged()'
Is there a way to use the signals/slots into an interface to be declared? That would greatly help me do reusable code part.
[36E56279]
une compagnie [cid:image014.jpg at 01D488C2.A8924C20]
RAPPROCHEZ LA DISTANCE
Jérôme Godbout
Développeur Logiciel Sénior /
Senior Software Developer
p: +1 (418) 800-1073 ext.:109
amotus.ca<http://www.amotus-solutions.com/>
statum-iot.com<http://statum-iot.com/>
[cid:image015.png at 01D488C2.A8924C20]<https://www.facebook.com/LesSolutionsAmotus/> [cid:image016.png at 01D488C2.A8924C20] <https://www.linkedin.com/company/amotus-solutions/> [cid:image017.png at 01D488C2.A8924C20] <https://twitter.com/AmotusSolutions> [cid:image018.jpg at 01D488C2.A8924C20] <https://www.youtube.com/channel/UCoYpQgsmj1iJZyDjTQ3x8Ig>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20181130/737961d7/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image013.jpg
Type: image/jpeg
Size: 6751 bytes
Desc: image013.jpg
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20181130/737961d7/attachment.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image014.jpg
Type: image/jpeg
Size: 1016 bytes
Desc: image014.jpg
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20181130/737961d7/attachment-0001.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image015.png
Type: image/png
Size: 483 bytes
Desc: image015.png
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20181130/737961d7/attachment.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image016.png
Type: image/png
Size: 506 bytes
Desc: image016.png
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20181130/737961d7/attachment-0001.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image017.png
Type: image/png
Size: 500 bytes
Desc: image017.png
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20181130/737961d7/attachment-0002.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image018.jpg
Type: image/jpeg
Size: 713 bytes
Desc: image018.jpg
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20181130/737961d7/attachment-0002.jpg>
More information about the Interest
mailing list