I have a plugin that implements interface (class with abstract methods) and that's all that this plugin exposes. How to make this interface signal-aware?

class IDataConnector : public QObject
{
Q_OBJECT
public:
virtual ~IDataConnector() {};
signals:
virtual void OnUpdate(QString msg) = 0;
};
...
Q_DECLARE_INTERFACE(IDataConnector, "dataconnector/1.0")

Compiler complains about signal being virtual, but it's warning and not an error .
Client can connect to the signal (QObject::connect returns true), but "emit OnUpdate" does not call the slot in the client.

Any suggestions?