Pregunta

¿Es posible recibir notificaciones que se está conectando una señal a un poco de ranura?

Por ejemplo, tenemos clase foo:

class Foo : public QObject
{
    Q_OBJECT

...
signals:
    void fooChanged(int bar);
};

y en algún lugar, alguien lo conecta:

Foo *foo = new Foo;
connect(foo, SIGNAL(fooChanged(int)),
        other, SLOT(setFoo(int)));

Me gustaría invocar mi código cuando se llama Conectar (), para que pueda registrar foo en un servidor para recibir los eventos de red que se emitirán la señal.De esta manera, podría simplemente conectar la señal y el remitente se registraría automáticamente en el servidor para recibir los eventos necesarios, lo que sería mucho menos propenso a los errores que el registro manual.Por ejemplo, pude reembolso Conectar ():

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);
}

Lamentablemente, no funcionaría cuando se usa el QOBJECT estático :: Conectar ().O puedo reolvender qObject :: MetaObject () para devolver una subclase QMetAOBject personalizada donde indexofsignal () se reemplace, pero esto tampoco parece posible e indexofsignal () tampoco es virtual.

¿Alguna idea?Gracias.

¿Fue útil?

Solución

See the connectNotify() virtual method in QObject, this is the one you should reimplement.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top