summaryrefslogtreecommitdiffstats
path: root/src/corelib/doc
diff options
context:
space:
mode:
authorStephen Kelly <stephen.kelly@kdab.com>2013-09-08 08:49:29 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-11 12:24:42 +0200
commit546d52e605b6a74d9a5be26fb374b831a46f2550 (patch)
treec48f2e75179c44f5bee37ee2c5d8b8afcc4d072a /src/corelib/doc
parent3256856bbea22da03109b84ef407e8dbc69930e7 (diff)
Add a convenient way to get a type-erased smart pointer from a QVariant.
Any known smart pointer in a QVariant can be handled in this way. The metatype system can be informed of new smart pointer types using an existing macro which is now documented. This is very similar to the existing infrastructure for containers. Change-Id: Iac4f9fabbc5a0626c04e1185d51d720b8b54603d Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Diffstat (limited to 'src/corelib/doc')
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_kernel_qmetatype.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/corelib/doc/snippets/code/src_corelib_kernel_qmetatype.cpp b/src/corelib/doc/snippets/code/src_corelib_kernel_qmetatype.cpp
index cb1346f74c..0af10af36d 100644
--- a/src/corelib/doc/snippets/code/src_corelib_kernel_qmetatype.cpp
+++ b/src/corelib/doc/snippets/code/src_corelib_kernel_qmetatype.cpp
@@ -143,3 +143,31 @@ void someFunc()
//! [11]
+//! [12]
+QPointer<QFile> fp(new QFile);
+QVariant var = QVariant::fromValue(fp);
+// ...
+if (var.canConvert<QObject*>()) {
+ QObject *sp = var.value<QObject*>();
+ qDebug() << sp->metaObject()->className(); // Prints 'QFile'.
+}
+//! [12]
+
+//! [13]
+
+#include <memory>
+
+Q_DECLARE_SMART_POINTER_METATYPE(std::shared_ptr)
+
+void someFunc()
+{
+ auto smart_ptr = std::make_shared<QFile>();
+ QVariant var = QVariant::fromValue(smart_ptr);
+ // ...
+ if (var.canConvert<QObject*>()) {
+ QObject *sp = var.value<QObject*>();
+ qDebug() << sp->metaObject()->className(); // Prints 'QFile'.
+ }
+}
+
+//! [13]