Qt : 신호가 연결되어있을 때 알림을받습니다
-
14-11-2019 - |
문제
신호가 일부 슬롯에 연결되어 있는지 알 수 있습니까?
예를 들어, 우리는 클래스 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.
제휴하지 않습니다 StackOverflow