Coup de pouce.Les signaux permet différentes stratégies d'utiliser les valeurs de retour des fentes pour former la valeur de retour du signal. E. g. l'ajout d'eux, formant un vector
hors d'eux, ou le retour de la dernière.
La commune de la sagesse (exprimée dans la documentation de Qt [EDIT: ainsi que des réponses à cette question ]), c'est que pas une telle chose est possible avec Qt signaux.
Cependant, lorsque je lance le moc sur la définition de classe suivante:
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();
};
Non seulement n'est pas moc se plaindre du signal avec la non-vide type de retour, il semble activement la mise en œuvre de telle manière à permettre un retour de la valeur à transmettre:
// 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;
}
Donc: d'après les docs, cette chose n'est pas possible. Alors qu'est-ce que moc fais ici?
Les fentes peuvent avoir des valeurs de retour, de sorte que peut-on brancher une machine à sous avec une valeur de retour d'un signal avec une valeur de retour maintenant? Cela peut être possible, après tout? Si oui, est-il utile?
EDIT: je ne demande pas de solutions, donc merci de ne pas fournir tout.
EDIT: Il n'est évidemment pas utile en Qt::QueuedConnection
mode (ce n'est pas le QPrintPreviewWidget API, bien que, et encore il existe et qu'il est utile). Mais qu' Qt::DirectConnection
et Qt::BlockingQueuedConnection
(ou Qt::AutoConnection
, quand il décide d' Qt::DirectConnection
).