Можно ли получить уведомление о подключении сигнала к какому-либо слоту?
Например, у нас есть класс Foo:
class Foo : public QObject
{
Q_OBJECT
...
signals:
void fooChanged(int bar);
};
И где-то кто-то подключает его:
Foo *foo = new Foo;
connect(foo, SIGNAL(fooChanged(int)),
other, SLOT(setFoo(int)));
Я хотел бы, чтобы мой код вызывался при вызове connect (), чтобы я мог зарегистрировать Foo на сервере для получения сетевых событий, которые будут вызывать передачу сигнала.Таким образом, я мог просто подключить сигнал, и отправитель автоматически зарегистрировался бы на сервере, чтобы получить требуемые события, которые были бы намного менее подвержены ошибкам, чем требование ручной регистрации.Например, я мог бы переопределить connect ():
bool Foo::connect(QObject *sender, const char *signal, QObject *receiver, const char *slot,...)
{
// do something here, such as requesting a server to receive events that will cause the signal to be emitted
return QObject::connect(sender, signal, receiver, slot);
}
К сожалению, это не будет работать, если используется статический QObject :: connect ().Или я мог бы переопределить QObject :: metaObject (), чтобы вернуть пользовательский подкласс QMetaObject, где indexOfSignal () переопределён, но это также не представляется возможным, и indexOfSignal () также не виртуален.Спасибо.