
We bake cookies in your browser for a better experience. Using this site means that you consent.Read More
TheQSignalSpy class enables introspection of signal emission.More...
| Header: | #include <QSignalSpy> |
| Inherits: | QObject andQList<QList<QVariant> > |
| QSignalSpy(QObject * object, const char * signal) | |
| bool | isValid() const |
| QByteArray | signal() const |
TheQSignalSpy class enables introspection of signal emission.
QSignalSpy can connect to any signal of any object and records its emission.QSignalSpy itself is a list ofQVariant lists. Each emission of the signal will append one item to the list, containing the arguments of the signal.
The following example records all signal emissions for theclicked() signal of aQCheckBox:
QCheckBox*box=...;QSignalSpy spy(box, SIGNAL(clicked(bool)));// do something that triggers the signalbox->animateClick();QCOMPARE(spy.count(),1);// make sure the signal was emitted exactly one timeQList<QVariant> arguments= spy.takeFirst();// take the first signalQVERIFY(arguments.at(0).toBool()==true);// verify the first argument
spy.takeFirst() returns the arguments for the first emitted signal, as a list ofQVariant objects. Theclicked() signal has a single bool argument, which is stored as the first entry in the list of arguments.
The example below catches a signal from a custom object:
QSignalSpy spy(myCustomObject, SIGNAL(mySignal(int,QString,double)));myCustomObject->doSomething();// trigger emission of the signalQList<QVariant> arguments= spy.takeFirst();QVERIFY(arguments.at(0).type()==QVariant::Int);QVERIFY(arguments.at(1).type()==QVariant::QString);QVERIFY(arguments.at(2).type()==QVariant::double);
Note: Non-standard data types need to be registered, using theqRegisterMetaType() function, before you can create aQSignalSpy. For example:
qRegisterMetaType<QModelIndex>("QModelIndex");QSignalSpy spy(&model, SIGNAL(whatever(QModelIndex)));
To retrieve theQModelIndex, you can useqvariant_cast:
// get the first argument from the first received signal:QModelIndex result= qvariant_cast<QModelIndex>(spy.at(0).at(0));
Constructs a newQSignalSpy that listens for emissions of thesignal from theQObjectobject. Neithersignal norobject can be null.
Example:
QSignalSpy spy(myPushButton, SIGNAL(clicked(bool)));
Returns true if the signal spy listens to a valid signal, otherwise false.
Returns the normalized signal the spy is currently listening to.
© 2016 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of theGNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.