From 5a8c13a7d4420cabf0fadbed6f8cae07162a32d8 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Thu, 12 Apr 2012 22:46:01 +0200 Subject: [PATCH] doc: Fix QObject::connect documentation Unfortunately, qdoc is too simple to understand any pointer to member function syntax. (the ::* token is not even tokenized. And even if it was, it would be a difficult way to hack that into the parser. (there is already an ugly workaround for non-member pointer to function hat works by having '(*' as a token,but the same hack is not possible for pointer to member function)) So I just put verbatim 'PointerToMemberFunction' Also remove the obsolete mention that Qt::UniqueConnection is not supported in that overload. It is now. (And it even contradicts the previous paragraph) Change-Id: I8fc9544808c9a462b0f11ccea406e2e33dee15b1 Reviewed-by: Geir Vattekar Reviewed-by: Casper van Donderen --- src/corelib/kernel/qobject.cpp | 19 ++++++++----------- src/corelib/kernel/qobject.h | 6 +++--- src/corelib/kernel/qobjectdefs.h | 2 +- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 25adee7cc7a..984624b58f8 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -3872,8 +3872,8 @@ void qDeleteInEventHandler(QObject *o) } /*! - \fn QMetaObject::Connection QObject::connect(const QObject *sender, (T::*signal)(...), const QObject *receiver, (T::*method)(...), Qt::ConnectionType type) - + \fn QMetaObject::Connection QObject::connect(const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type) + \overload connect() \threadsafe Creates a connection of the given \a type from the \a signal in @@ -3929,18 +3929,14 @@ void qDeleteInEventHandler(QObject *o) \snippet doc/src/snippets/code/src_corelib_kernel_qobject.cpp 25 make sure to declare the argument type with Q_DECLARE_METATYPE - - A signal is emitted for every connection you make; - two signals are emitted for duplicate connections. - This overload does not support the type Qt::UniqueConnection */ /*! - \fn QMetaObject::Connection QObject::connect(const QObject *sender, (T::*signal)(...), Functor functor) + \fn QMetaObject::Connection QObject::connect(const QObject *sender, PointerToMemberFunction signal, Functor functor) \threadsafe - \overload + \overload connect() Creates a connection of the given \a type from the \a signal in the \a sender object to the \a functor and returns a handle to the connection @@ -4089,9 +4085,9 @@ bool QObject::disconnect(const QMetaObject::Connection &connection) return true; } -/*! \fn bool QObject::disconnect(const QObject *sender, (T::*signal)(...), const Qbject *receiver, (T::*method)(...)) +/*! \fn bool QObject::disconnect(const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method) + \overload diconnect() \threadsafe - \overload Disconnects \a signal in object \a sender from \a method in object \a receiver. Returns true if the connection is successfully broken; @@ -4148,6 +4144,7 @@ bool QObject::disconnect(const QMetaObject::Connection &connection) \sa connect() */ + bool QObject::disconnectImpl(const QObject *sender, void **signal, const QObject *receiver, void **slot, const QMetaObject *senderMetaObject) { if (sender == 0 || (receiver == 0 && slot != 0)) { @@ -4209,7 +4206,7 @@ QMetaObject::Connection::~Connection() } /*! - \fn bool QMetaObject::Connection::operator bool() + \fn QMetaObject::Connection::operator bool() const Returns true if the connection is valid. diff --git a/src/corelib/kernel/qobject.h b/src/corelib/kernel/qobject.h index 9f096170716..59339da894d 100644 --- a/src/corelib/kernel/qobject.h +++ b/src/corelib/kernel/qobject.h @@ -199,8 +199,8 @@ public: const char *member, Qt::ConnectionType type = Qt::AutoConnection) const; #ifdef Q_QDOC - QMetaObject::Connection QObject::connect(const QObject *sender, (T::*signal)(...), const QObject *receiver, (T::*method)(...), Qt::ConnectionType type) - QMetaObject::Connection QObject::connect(const QObject *sender, (T::*signal)(...), Functor functor) + static QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type); + static QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor); #else //Connect a signal to a pointer to qobject member function template @@ -279,7 +279,7 @@ public: static bool disconnect(const QMetaObject::Connection &); #ifdef Q_QDOC - bool QObject::disconnect(const QObject *sender, (T::*signal)(...), const Qbject *receiver, (T::*method)(...)) + static bool disconnect(const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method); #else template static inline bool disconnect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, diff --git a/src/corelib/kernel/qobjectdefs.h b/src/corelib/kernel/qobjectdefs.h index 5588724d4c5..d391fb94ce8 100644 --- a/src/corelib/kernel/qobjectdefs.h +++ b/src/corelib/kernel/qobjectdefs.h @@ -462,7 +462,7 @@ public: Connection(); Connection(const Connection &other); Connection &operator=(const Connection &other); -#ifdef qdoc +#ifdef Q_QDOC operator bool() const; #else typedef void *Connection::*RestrictedBool;