Os sinais Qt podem retornar um valor?

Boost.Signals permitestratégias divers de usar os valores de retorno dos slots para formar o valor de retorno do sinal. Por exemplo. adicionando-os, formando umvector fora deles ou retornando o últim

O senso comum (expresso na documentação Qt[EDITAR, bem como algumas respostas a esta pergunta]) é que isso não é possível com os sinais Qt.

No entanto, quando executo o moc na seguinte definição de classe:

class Object : public QObject {
    Q_OBJECT
public:
    explicit Object( QObject * parent=0 )
        : QObject( parent ) {}

public Q_SLOTS:
    void voidSlot();
    int intSlot();

Q_SIGNALS:
    void voidSignal();
    int intSignal();
};

Não apenas o moc não reclama do sinal com o tipo de retorno não nulo, parece implementá-lo ativamente de forma apermiti um valor de retorno a ser passado:

// SIGNAL 1
int Object::intSignal()
{
    int _t0;
    void *_a[] = { const_cast<void*>(reinterpret_cast<const void*>(&_t0)) };
    QMetaObject::activate(this, &staticMetaObject, 1, _a);
    return _t0;
}

Então: de acordo com os documentos, isso não é possível. Então, o que o moc está fazendo aqui?

Slots podem ter valores de retorno, então podemos conectar um slot com um valor de retorno a um sinal com um valor de retorno agora? Afinal, isso é possível? Se sim, é útil?

EDITAR Não estou solicitando soluções alternativas; portanto, não forneça nenhum

EDITAR Obviamente não é útil emQt::QueuedConnection (também não é oPI @QPrintPreviewWidget, no entanto, e ainda existe e é útil). Mas eQt::DirectConnection eQt::BlockingQueuedConnection (ouQt::AutoConnection, quando resolver paraQt::DirectConnection).

questionAnswers(5)

yourAnswerToTheQuestion