Qt 4.8
Public Slots | Signals | Public Functions | List of all members
QSignalMapper Class Reference

The QSignalMapper class bundles signals from identifiable senders. More...

#include <qsignalmapper.h>

Inheritance diagram for QSignalMapper:
QObject

Public Slots

void map ()
 This slot emits signals based on which object sends signals to it. More...
 
void map (QObject *sender)
 This slot emits signals based on the sender object. More...
 
- Public Slots inherited from QObject
void deleteLater ()
 Schedules this object for deletion. More...
 

Signals

void mapped (int)
 This signal is emitted when map() is signalled from an object that has an integer mapping set. More...
 
void mapped (const QString &)
 This signal is emitted when map() is signalled from an object that has a string mapping set. More...
 
void mapped (QWidget *)
 This signal is emitted when map() is signalled from an object that has a widget mapping set. More...
 
void mapped (QObject *)
 This signal is emitted when map() is signalled from an object that has an object mapping set. More...
 
- Signals inherited from QObject
void destroyed (QObject *=0)
 This signal is emitted immediately before the object obj is destroyed, and can not be blocked. More...
 

Public Functions

QObjectmapping (int id) const
 Returns the sender QObject that is associated with the id. More...
 
QObjectmapping (const QString &text) const
 
QObjectmapping (QWidget *widget) const
 
QObjectmapping (QObject *object) const
 
 QSignalMapper (QObject *parent=0)
 Constructs a QSignalMapper with parent parent. More...
 
void removeMappings (QObject *sender)
 Removes all mappings for sender. More...
 
void setMapping (QObject *sender, int id)
 Adds a mapping so that when map() is signalled from the given sender, the signal mapped(id) is emitted. More...
 
void setMapping (QObject *sender, const QString &text)
 Adds a mapping so that when map() is signalled from the sender, the signal mapped(text ) is emitted. More...
 
void setMapping (QObject *sender, QWidget *widget)
 Adds a mapping so that when map() is signalled from the sender, the signal mapped(widget ) is emitted. More...
 
void setMapping (QObject *sender, QObject *object)
 Adds a mapping so that when map() is signalled from the sender, the signal mapped(object ) is emitted. More...
 
 ~QSignalMapper ()
 Destroys the QSignalMapper. More...
 
- Public Functions inherited from QObject
bool blockSignals (bool b)
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). More...
 
const QObjectListchildren () const
 Returns a list of child objects. More...
 
bool connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=0, const QObject *receiver=0, const char *member=0)
 
bool disconnect (const QObject *receiver, const char *member=0)
 
void dumpObjectInfo ()
 Dumps information about signal connections, etc. More...
 
void dumpObjectTree ()
 Dumps a tree of children to the debug output. More...
 
QList< QByteArraydynamicPropertyNames () const
 Returns the names of all properties that were dynamically added to the object using setProperty(). More...
 
virtual bool event (QEvent *)
 This virtual function receives events to an object and should return true if the event e was recognized and processed. More...
 
virtual bool eventFilter (QObject *, QEvent *)
 Filters events if this object has been installed as an event filter for the watched object. More...
 
template<typename T >
findChild (const QString &aName=QString()) const
 Returns the child of this object that can be cast into type T and that is called name, or 0 if there is no such object. More...
 
template<typename T >
QList< T > findChildren (const QString &aName=QString()) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. More...
 
template<typename T >
QList< T > findChildren (const QRegExp &re) const
 
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false. More...
 
void installEventFilter (QObject *)
 Installs an event filter filterObj on this object. More...
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false. More...
 
void killTimer (int id)
 Kills the timer with timer identifier, id. More...
 
virtual const QMetaObjectmetaObject () const
 Returns a pointer to the meta-object of this object. More...
 
void moveToThread (QThread *thread)
 Changes the thread affinity for this object and its children. More...
 
QString objectName () const
 
QObjectparent () const
 Returns a pointer to the parent object. More...
 
QVariant property (const char *name) const
 Returns the value of the object's name property. More...
 
Q_INVOKABLE QObject (QObject *parent=0)
 Constructs an object with parent object parent. More...
 
void removeEventFilter (QObject *)
 Removes an event filter object obj from this object. More...
 
void setObjectName (const QString &name)
 
void setParent (QObject *)
 Makes the object a child of parent. More...
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value. More...
 
void setUserData (uint id, QObjectUserData *data)
 
bool signalsBlocked () const
 Returns true if signals are blocked; otherwise returns false. More...
 
int startTimer (int interval)
 Starts a timer and returns a timer identifier, or returns zero if it could not start a timer. More...
 
QThreadthread () const
 Returns the thread in which the object lives. More...
 
QObjectUserDatauserData (uint id) const
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects. More...
 

Additional Inherited Members

- Static Public Functions inherited from QObject
static bool connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 Creates a connection of the given type from the signal in the sender object to the method in the receiver object. More...
 
static bool connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 Disconnects signal in object sender from method in object receiver. More...
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static uint registerUserData ()
 
static QString tr (const char *sourceText, const char *comment=0, int n=-1)
 
static QString trUtf8 (const char *sourceText, const char *comment=0, int n=-1)
 
- Static Public Variables inherited from QObject
static const QMetaObject staticMetaObject
 This variable stores the meta-object for the class. More...
 
- Protected Functions inherited from QObject
virtual void childEvent (QChildEvent *)
 This event handler can be reimplemented in a subclass to receive child events. More...
 
virtual void connectNotify (const char *signal)
 This virtual function is called when something has been connected to signal in this object. More...
 
virtual void customEvent (QEvent *)
 This event handler can be reimplemented in a subclass to receive custom events. More...
 
virtual void disconnectNotify (const char *signal)
 This virtual function is called when something has been disconnected from signal in this object. More...
 
 QObject (QObjectPrivate &dd, QObject *parent=0)
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal. More...
 
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns 0. More...
 
int senderSignalIndex () const
 
virtual void timerEvent (QTimerEvent *)
 This event handler can be reimplemented in a subclass to receive timer events for the object. More...
 
- Protected Variables inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Static Protected Variables inherited from QObject
static const QMetaObject staticQtMetaObject
 

Detailed Description

The QSignalMapper class bundles signals from identifiable senders.

This class collects a set of parameterless signals, and re-emits them with integer, string or widget parameters corresponding to the object that sent the signal.

The class supports the mapping of particular strings or integers with particular objects using setMapping(). The objects' signals can then be connected to the map() slot which will emit the mapped() signal with the string or integer associated with the original signalling object. Mappings can be removed later using removeMappings().

Example: Suppose we want to create a custom widget that contains a group of buttons (like a tool palette). One approach is to connect each button's clicked() signal to its own custom slot; but in this example we want to connect all the buttons to a single slot and parameterize the slot by the button that was clicked.

Here's the definition of a simple custom widget that has a single signal, clicked(), which is emitted with the text of the button that was clicked:

class ButtonWidget : public QWidget
{
public:
ButtonWidget(QStringList texts, QWidget *parent = 0);
void clicked(const QString &text);
private:
QSignalMapper *signalMapper;
};

The only function that we need to implement is the constructor:

ButtonWidget::ButtonWidget(QStringList texts, QWidget *parent)
: QWidget(parent)
{
signalMapper = new QSignalMapper(this);
QGridLayout *gridLayout = new QGridLayout;
for (int i = 0; i < texts.size(); ++i) {
QPushButton *button = new QPushButton(texts[i]);
connect(button, SIGNAL(clicked()), signalMapper, SLOT(map()));
signalMapper->setMapping(button, texts[i]);
gridLayout->addWidget(button, i / 3, i % 3);
}
connect(signalMapper, SIGNAL(mapped(const QString &)),
this, SIGNAL(clicked(const QString &)));
setLayout(gridLayout);
}

A list of texts is passed to the constructor. A signal mapper is constructed and for each text in the list a QPushButton is created. We connect each button's clicked() signal to the signal mapper's map() slot, and create a mapping in the signal mapper from each button to the button's text. Finally we connect the signal mapper's mapped() signal to the custom widget's clicked() signal. When the user clicks a button, the custom widget will emit a single clicked() signal whose argument is the text of the button the user clicked.

See also
QObject, QButtonGroup, QActionGroup

Definition at line 56 of file qsignalmapper.h.

Constructors and Destructors

◆ QSignalMapper()

QSignalMapper::QSignalMapper ( QObject parent = 0)
explicit

Constructs a QSignalMapper with parent parent.

Definition at line 122 of file qsignalmapper.cpp.

123  : QObject(*new QSignalMapperPrivate, parent)
124 {
125 }
Q_INVOKABLE QObject(QObject *parent=0)
Constructs an object with parent object parent.
Definition: qobject.cpp:753

◆ ~QSignalMapper()

QSignalMapper::~QSignalMapper ( )

Destroys the QSignalMapper.

Definition at line 142 of file qsignalmapper.cpp.

143 {
144 }

Functions

◆ map [1/2]

void QSignalMapper::map ( )
slot

This slot emits signals based on which object sends signals to it.

Definition at line 266 of file qsignalmapper.cpp.

266 { map(sender()); }
QObject * sender() const
Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; othe...
Definition: qobject.cpp:2327
void map()
This slot emits signals based on which object sends signals to it.

◆ map [2/2]

void QSignalMapper::map ( QObject sender)
slot

This slot emits signals based on the sender object.

Definition at line 271 of file qsignalmapper.cpp.

272 {
274  if (d->intHash.contains(sender))
275  emit mapped(d->intHash.value(sender));
276  if (d->stringHash.contains(sender))
277  emit mapped(d->stringHash.value(sender));
278  if (d->widgetHash.contains(sender))
279  emit mapped(d->widgetHash.value(sender));
280  if (d->objectHash.contains(sender))
281  emit mapped(d->objectHash.value(sender));
282 }
double d
Definition: qnumeric_p.h:62
The QSignalMapper class bundles signals from identifiable senders.
Definition: qsignalmapper.h:56
#define Q_D(Class)
Definition: qglobal.h:2482
#define emit
Definition: qobjectdefs.h:76
void mapped(int)
This signal is emitted when map() is signalled from an object that has an integer mapping set...

◆ mapped [1/4]

void QSignalMapper::mapped ( int  i)
signal

This signal is emitted when map() is signalled from an object that has an integer mapping set.

The object's mapped integer is passed in i.

See also
setMapping()

Referenced by map().

◆ mapped [2/4]

void QSignalMapper::mapped ( const QString text)
signal

This signal is emitted when map() is signalled from an object that has a string mapping set.

The object's mapped string is passed in text.

See also
setMapping()

◆ mapped [3/4]

void QSignalMapper::mapped ( QWidget widget)
signal

This signal is emitted when map() is signalled from an object that has a widget mapping set.

The object's mapped widget is passed in widget.

See also
setMapping()

◆ mapped [4/4]

void QSignalMapper::mapped ( QObject object)
signal

This signal is emitted when map() is signalled from an object that has an object mapping set.

The object provided by the map is passed in object.

See also
setMapping()

◆ mapping() [1/4]

QObject * QSignalMapper::mapping ( int  id) const

Returns the sender QObject that is associated with the id.

See also
setMapping()

Definition at line 205 of file qsignalmapper.cpp.

206 {
207  Q_D(const QSignalMapper);
208  return d->intHash.key(id);
209 }
double d
Definition: qnumeric_p.h:62
The QSignalMapper class bundles signals from identifiable senders.
Definition: qsignalmapper.h:56
#define Q_D(Class)
Definition: qglobal.h:2482

◆ mapping() [2/4]

QObject * QSignalMapper::mapping ( const QString text) const

Definition at line 214 of file qsignalmapper.cpp.

215 {
216  Q_D(const QSignalMapper);
217  return d->stringHash.key(id);
218 }
double d
Definition: qnumeric_p.h:62
The QSignalMapper class bundles signals from identifiable senders.
Definition: qsignalmapper.h:56
#define Q_D(Class)
Definition: qglobal.h:2482

◆ mapping() [3/4]

QObject * QSignalMapper::mapping ( QWidget widget) const

Definition at line 228 of file qsignalmapper.cpp.

229 {
230  Q_D(const QSignalMapper);
231  return d->widgetHash.key(widget);
232 }
double d
Definition: qnumeric_p.h:62
The QSignalMapper class bundles signals from identifiable senders.
Definition: qsignalmapper.h:56
#define Q_D(Class)
Definition: qglobal.h:2482

◆ mapping() [4/4]

QObject * QSignalMapper::mapping ( QObject object) const

Definition at line 242 of file qsignalmapper.cpp.

243 {
244  Q_D(const QSignalMapper);
245  return d->objectHash.key(object);
246 }
double d
Definition: qnumeric_p.h:62
The QSignalMapper class bundles signals from identifiable senders.
Definition: qsignalmapper.h:56
#define Q_D(Class)
Definition: qglobal.h:2482

◆ removeMappings()

void QSignalMapper::removeMappings ( QObject sender)

Removes all mappings for sender.

This is done automatically when mapped objects are destroyed.

Definition at line 253 of file qsignalmapper.cpp.

254 {
256 
257  d->intHash.remove(sender);
258  d->stringHash.remove(sender);
259  d->widgetHash.remove(sender);
260  d->objectHash.remove(sender);
261 }
double d
Definition: qnumeric_p.h:62
The QSignalMapper class bundles signals from identifiable senders.
Definition: qsignalmapper.h:56
#define Q_D(Class)
Definition: qglobal.h:2482

◆ setMapping() [1/4]

void QSignalMapper::setMapping ( QObject sender,
int  id 
)

Adds a mapping so that when map() is signalled from the given sender, the signal mapped(id) is emitted.

There may be at most one integer ID for each sender.

See also
mapping()

Definition at line 154 of file qsignalmapper.cpp.

Referenced by ShaderEffectItem::connectPropertySignals().

155 {
157  d->intHash.insert(sender, id);
158  connect(sender, SIGNAL(destroyed()), this, SLOT(_q_senderDestroyed()));
159 }
double d
Definition: qnumeric_p.h:62
#define SLOT(a)
Definition: qobjectdefs.h:226
The QSignalMapper class bundles signals from identifiable senders.
Definition: qsignalmapper.h:56
#define Q_D(Class)
Definition: qglobal.h:2482
#define SIGNAL(a)
Definition: qobjectdefs.h:227
void destroyed(QObject *=0)
This signal is emitted immediately before the object obj is destroyed, and can not be blocked...
static bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
Creates a connection of the given type from the signal in the sender object to the method in the rece...
Definition: qobject.cpp:2580

◆ setMapping() [2/4]

void QSignalMapper::setMapping ( QObject sender,
const QString text 
)

Adds a mapping so that when map() is signalled from the sender, the signal mapped(text ) is emitted.

There may be at most one text for each sender.

Definition at line 167 of file qsignalmapper.cpp.

168 {
170  d->stringHash.insert(sender, text);
171  connect(sender, SIGNAL(destroyed()), this, SLOT(_q_senderDestroyed()));
172 }
double d
Definition: qnumeric_p.h:62
#define SLOT(a)
Definition: qobjectdefs.h:226
The QSignalMapper class bundles signals from identifiable senders.
Definition: qsignalmapper.h:56
#define Q_D(Class)
Definition: qglobal.h:2482
#define SIGNAL(a)
Definition: qobjectdefs.h:227
void destroyed(QObject *=0)
This signal is emitted immediately before the object obj is destroyed, and can not be blocked...
static bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
Creates a connection of the given type from the signal in the sender object to the method in the rece...
Definition: qobject.cpp:2580

◆ setMapping() [3/4]

void QSignalMapper::setMapping ( QObject sender,
QWidget widget 
)

Adds a mapping so that when map() is signalled from the sender, the signal mapped(widget ) is emitted.

There may be at most one widget for each sender.

Definition at line 180 of file qsignalmapper.cpp.

181 {
183  d->widgetHash.insert(sender, widget);
184  connect(sender, SIGNAL(destroyed()), this, SLOT(_q_senderDestroyed()));
185 }
double d
Definition: qnumeric_p.h:62
#define SLOT(a)
Definition: qobjectdefs.h:226
The QSignalMapper class bundles signals from identifiable senders.
Definition: qsignalmapper.h:56
#define Q_D(Class)
Definition: qglobal.h:2482
#define SIGNAL(a)
Definition: qobjectdefs.h:227
void destroyed(QObject *=0)
This signal is emitted immediately before the object obj is destroyed, and can not be blocked...
static bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
Creates a connection of the given type from the signal in the sender object to the method in the rece...
Definition: qobject.cpp:2580

◆ setMapping() [4/4]

void QSignalMapper::setMapping ( QObject sender,
QObject object 
)

Adds a mapping so that when map() is signalled from the sender, the signal mapped(object ) is emitted.

There may be at most one object for each sender.

Definition at line 193 of file qsignalmapper.cpp.

194 {
196  d->objectHash.insert(sender, object);
197  connect(sender, SIGNAL(destroyed()), this, SLOT(_q_senderDestroyed()));
198 }
double d
Definition: qnumeric_p.h:62
#define SLOT(a)
Definition: qobjectdefs.h:226
The QSignalMapper class bundles signals from identifiable senders.
Definition: qsignalmapper.h:56
#define Q_D(Class)
Definition: qglobal.h:2482
#define SIGNAL(a)
Definition: qobjectdefs.h:227
void destroyed(QObject *=0)
This signal is emitted immediately before the object obj is destroyed, and can not be blocked...
static bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
Creates a connection of the given type from the signal in the sender object to the method in the rece...
Definition: qobject.cpp:2580

The documentation for this class was generated from the following files: