Использование Qt 5.11.Переопределив QObject::connectNotify
, я могу получать уведомления, если к моему сигналу подключен слот:
void connectNotify(const QMetaMethod &signal) override {
if (signal == QMetaMethod::fromSignal(&PromiseBase::resolved()) && isResolved()) {
// Here, I want to call the slot immediately.
}
}
Когда это происходит, я хочу немедленно вызвать слот - и только этот слотне все другие слоты, которые могут быть подключены к сигналу. Как я могу это сделать? Каркас Qt дает мне сигнал, но не слот.
Контекст: я работаю над классом Promise, похожим на Обещания JavaScript .Ожидается, что подключение слота к сигналу resolved
всегда вызовет слот ровно один раз, независимо от того, было ли обещание выполнено или все еще ожидает ответа.
(я пишу свое собственное обещание, а неиспользуя QFuture, потому что не существует документированного и поддерживаемого способа создания ваших собственных объектов QFuture, а QFuture не поддерживает сообщения об ошибках.)