summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMitch Curtis <mitch.curtis@digia.com>2014-06-30 09:56:26 +0200
committerMitch Curtis <mitch.curtis@digia.com>2014-07-03 10:57:40 +0200
commitb398515b09d23b5b94d16676b709de6c0b382e56 (patch)
tree21f9aef9e1eafa1bd62027f721978926b31b3af3
parent7021188778c6eb80a721c8975b68cf6b44444839 (diff)
Tidy up and expand QSharedPointer documentation.
Also adds the 5.4.0 changes file. Change-Id: I10967ca179b91229e7d1ee0fc666bbd8dbe54425 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r--dist/changes-5.4.026
-rw-r--r--src/corelib/tools/qsharedpointer.cpp27
2 files changed, 50 insertions, 3 deletions
diff --git a/dist/changes-5.4.0 b/dist/changes-5.4.0
new file mode 100644
index 0000000000..c26e205bc0
--- /dev/null
+++ b/dist/changes-5.4.0
@@ -0,0 +1,26 @@
+Qt 5.4 introduces many new features and improvements as well as bugfixes
+over the 5.3.x series. For more details, refer to the online documentation
+included in this distribution. The documentation is also available online:
+
+ http://qt-project.org/doc/qt-5.4
+
+The Qt version 5.4 series is binary compatible with the 5.3.x series.
+Applications compiled for 5.3 will continue to run with 5.4.
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Qt Bug Tracker:
+
+ http://bugreports.qt-project.org/
+
+Each of these identifiers can be entered in the bug tracker to obtain more
+information about a particular change.
+
+****************************************************************************
+* Library *
+****************************************************************************
+
+QtCore
+------
+
+ - Added QEnableSharedFromThis, a class that allows obtaining a
+ QSharedPointer for an object already managed by a shared pointer.
diff --git a/src/corelib/tools/qsharedpointer.cpp b/src/corelib/tools/qsharedpointer.cpp
index 180f45eb56..e0cd54022e 100644
--- a/src/corelib/tools/qsharedpointer.cpp
+++ b/src/corelib/tools/qsharedpointer.cpp
@@ -374,12 +374,12 @@
/*!
\class QEnableSharedFromThis
\inmodule QtCore
- \brief A base class that allows to obtain a QSharedPointer for an object already managed by a shared pointer
+ \brief A base class that allows obtaining a QSharedPointer for an object already managed by a shared pointer
\since 5.4
You can inherit this class when you need to create a QSharedPointer
- from any instance of a class -- for instance, from within the
- object itself. The key point is that the "obvious" technique of
+ from any instance of a class; for instance, from within the
+ object itself. The key point is that the technique of
just returning QSharedPointer<T>(this) can not be used, because
this winds up creating multiple distinct QSharedPointer objects
with separate reference counts. For this reason you must never
@@ -406,6 +406,27 @@
Q_ASSERT(p == y); // p and q must share ownership
}
\endcode
+
+ It is also possible to get a shared pointer from an object outside of
+ the class itself. This is especially useful in code that provides an
+ interface to scripts, where it is currently not possible to use shared
+ pointers. For example:
+
+ \code
+ class ScriptInterface : public QObject
+ {
+ Q_OBJECT
+
+ // ...
+
+ public slots:
+ void slotCalledByScript(Y *managedBySharedPointer)
+ {
+ QSharedPointer<Y> yPtr = managedBySharedPointer->sharedFromThis();
+ // Some other code unrelated to scripts that expects a QSharedPointer<Y> ...
+ }
+ };
+ \endcode
*/
/*!