diff options
author | Olivier Goffart <ogoffart@woboq.com> | 2011-11-11 17:01:06 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-11-25 01:12:14 +0100 |
commit | 79f675a1e0f628bbc25345ebc1eb1f5809166c6b (patch) | |
tree | 998a846e047fcadb588d9922f6aa8aaa6bd562e0 /src/corelib/kernel/qobject.h | |
parent | e759f9580ef0a76131c7540015a87968742fce9f (diff) |
Change the return value of QObject::connect
From a bool to a handle to to connection.
Also added a new overload of disconnect that disconnect a handle
This is required because with the new syntax taking lambda or functors,
it is the only way to disconnect a connection (as it is impossible to
compare functors)
The new return value is QMetaObject::Connection, it is a wrapper around
the internal QObjectPrivate::Connection.
QObjectPrivate::Connection is now reference counted.
tst_qglobal.cpp:
This test set up an internal callback, and the callback do not set any
proper connection handle (and tbh, it would be hard for it to do so).
So the returned QMetaObject::Connection is invalid, and ok is false
(Internal callbacks are only used for jambi and should probably be removed)
Change-Id: I111626fb4f47efc4db5e2ea5bff9da15f08fea7b
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/kernel/qobject.h')
-rw-r--r-- | src/corelib/kernel/qobject.h | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/corelib/kernel/qobject.h b/src/corelib/kernel/qobject.h index 591c5c88bf..038b59042b 100644 --- a/src/corelib/kernel/qobject.h +++ b/src/corelib/kernel/qobject.h @@ -194,15 +194,14 @@ public: void installEventFilter(QObject *); void removeEventFilter(QObject *); - - static bool connect(const QObject *sender, const char *signal, + static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType = Qt::AutoConnection); - - static bool connect(const QObject *sender, const QMetaMethod &signal, + + static QMetaObject::Connection connect(const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type = Qt::AutoConnection); - inline bool connect(const QObject *sender, const char *signal, + inline QMetaObject::Connection connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type = Qt::AutoConnection) const; static bool disconnect(const QObject *sender, const char *signal, @@ -214,6 +213,7 @@ public: { return disconnect(this, signal, receiver, member); } inline bool disconnect(const QObject *receiver, const char *member = 0) { return disconnect(this, 0, receiver, member); } + static bool disconnect(const QMetaObject::Connection &); void dumpObjectTree(); void dumpObjectInfo(); @@ -275,8 +275,8 @@ private: Q_PRIVATE_SLOT(d_func(), void _q_reregisterTimers(void *)) }; -inline bool QObject::connect(const QObject *asender, const char *asignal, - const char *amember, Qt::ConnectionType atype) const +inline QMetaObject::Connection QObject::connect(const QObject *asender, const char *asignal, + const char *amember, Qt::ConnectionType atype) const { return connect(asender, asignal, this, amember, atype); } #ifndef QT_NO_USERDATA |