Я хотел бы вообще и временно заблокировать сигналы между двумя QObjects
без изменения поведения других сигналов/слотов и без знания их контекстов.
Что-то вроде QObject::blockSignals(bool), но только действующий между двумя QObjects
.
То есть реализация следующей функции SignalBlocker::blockSignals(bool)
:
class SignalBlocker {
public:
SignalBlocker(QObject *sender, QObject *receiver) :
mSender(sender), mReceiver(receiver) {}
void blockSignals(bool block);
private:
QObject *mSender, *mReceiver;
}
Это было бы возможно путем отключения и повторного подключения объектов, но сначала необходимо было бы сохранить список сигналов/слотов. Методы самоанализа не кажутся достаточно мощными для достижения этой цели (я безуспешно смотрел на QMetaObject
и QSignalSpy
).