En regardant à travers la source Qt, il semble que lorsqu'une fente est appelée à partir QMetaObject :: InvokeMethod le type de retour peut être spécifié et la valeur de rendement obtenu. (Jetez un oeil à invokeMethod dans l'aide de Qt)
Je n'ai pas trouvé beaucoup d'exemples de ce qui est réellement utilisé dans la source Qt. Un que j'ai trouvé
bool QAbstractItemDelegate::helpEvent
qui est une fente avec un type de retour et est appelé à partir
QAbstractItemView::viewportEvent
utilisant invokeMethod.
Je pense que la valeur de retour pour un emplacement n'est disponible que lorsque la fonction est appelée directement (lorsqu'il s'agit d'une fonction C++ normale) ou lors de l'utilisation de invokeMethod. Je pense que cela est vraiment fait pour les fonctions Qt internes plutôt que pour une utilisation normale dans les programmes utilisant Qt.
Edit: Pour le cas de l'échantillon:
case 8: { int _r = selectPart((*reinterpret_cast< AppObject*(*)>(_a[1])), *reinterpret_cast< int(*)>(_a[2])));
if (_a[0]) *reinterpret_cast< int*>(_a[0]) = _r; } break;
le vecteur _A est une liste d'arguments qui est passé à qt_metacall. Ceci est passé par QMetaObject :: invokeMethod. Ainsi, la valeur de retour dans le code généré par moc est enregistrée et renvoyée à l'appelant. Donc, pour les interactions normales entre fentes et signaux, la valeur de retour n'est utilisée pour rien du tout. Cependant, le mécanisme existe pour que les valeurs de retour des emplacements soient accessibles si l'emplacement est appelé via invokeMethod.
Très belle question. – SunnyShah