문제

신호가 일부 슬롯에 연결되어 있는지 알 수 있습니까?

예를 들어, 우리는 클래스 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 ()는 indexofsignal ()이 재 구현되는 사용자 정의 qmetaObject 서브 클래스를 반환 할 수 있지만 이는 가능하지 않고 indexofsignal ()도 가상이 아닙니다.

아이디어가 있습니까?고마워.

도움이 되었습니까?

해결책

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top