diff options
Diffstat (limited to 'doc/man/man3/qguardedptr.3qt')
-rw-r--r-- | doc/man/man3/qguardedptr.3qt | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/doc/man/man3/qguardedptr.3qt b/doc/man/man3/qguardedptr.3qt new file mode 100644 index 000000000..6e8d73508 --- /dev/null +++ b/doc/man/man3/qguardedptr.3qt @@ -0,0 +1,148 @@ +'\" t +.TH QGuardedPtr 3qt "2 February 2007" "Trolltech AS" \" -*- nroff -*- +.\" Copyright 1992-2007 Trolltech ASA. All rights reserved. See the +.\" license file included in the distribution for a complete license +.\" statement. +.\" +.ad l +.nh +.SH NAME +QGuardedPtr \- Template class that provides guarded pointers to QObjects +.SH SYNOPSIS +\fC#include <qguardedptr.h>\fR +.PP +.SS "Public Members" +.in +1c +.ti -1c +.BI "\fBQGuardedPtr\fR ()" +.br +.ti -1c +.BI "\fBQGuardedPtr\fR ( T * p )" +.br +.ti -1c +.BI "\fBQGuardedPtr\fR ( const QGuardedPtr<T> & p )" +.br +.ti -1c +.BI "\fB~QGuardedPtr\fR ()" +.br +.ti -1c +.BI "QGuardedPtr<T> & \fBoperator=\fR ( const QGuardedPtr<T> & p )" +.br +.ti -1c +.BI "QGuardedPtr<T> & \fBoperator=\fR ( T * p )" +.br +.ti -1c +.BI "bool \fBoperator==\fR ( const QGuardedPtr<T> & p ) const" +.br +.ti -1c +.BI "bool \fBoperator!=\fR ( const QGuardedPtr<T> & p ) const" +.br +.ti -1c +.BI "bool \fBisNull\fR () const" +.br +.ti -1c +.BI "T * \fBoperator->\fR () const" +.br +.ti -1c +.BI "T & \fBoperator*\fR () const" +.br +.ti -1c +.BI "\fBoperator T *\fR () const" +.br +.in -1c +.SH DESCRIPTION +The QGuardedPtr class is a template class that provides guarded pointers to QObjects. +.PP +A guarded pointer, \fCQGuardedPtr<X>\fR, behaves like a normal C++ pointer \fCX*\fR, except that it is automatically set to 0 when the referenced object is destroyed (unlike normal C++ pointers, which become "dangling pointers" in such cases). \fCX\fR must be a subclass of QObject. +.PP +Guarded pointers are useful whenever you need to store a pointer to a QObject that is owned by someone else and therefore might be destroyed while you still hold a reference to it. You can safely test the pointer for validity. +.PP +Example: +.PP +.nf +.br + QGuardedPtr<QLabel> label = new QLabel( 0, "label" ); +.br + label->setText( "I like guarded pointers" ); +.br +.br + delete (QLabel*) label; // simulate somebody destroying the label +.br +.br + if ( label) +.br + label->show(); +.br + else +.br + qDebug("The label has been destroyed"); +.br +.fi +.PP +The program will output \fCThe label has been destroyed\fR rather than dereferencing an invalid address in \fClabel->show()\fR. +.PP +The functions and operators available with a QGuardedPtr are the same as those available with a normal unguarded pointer, except the pointer arithmetic operators (++, --, -, and +), which are normally used only with arrays of objects. Use them like normal pointers and you will not need to read this class documentation. +.PP +For creating guarded pointers, you can construct or assign to them from an X* or from another guarded pointer of the same type. You can compare them with each other using operator==() and operator!=(), or test for 0 with isNull(). And you can dereference them using either the \fC*x\fR or the \fCx->member\fR notation. +.PP +A guarded pointer will automatically cast to an X*, so you can freely mix guarded and unguarded pointers. This means that if you have a QGuardedPtr<QWidget>, you can pass it to a function that retquires a QWidget*. For this reason, it is of little value to declare functions to take a QGuardedPtr as a parameter; just use normal pointers. Use a QGuardedPtr when you are storing a pointer over time. +.PP +Note again that class \fIX\fR must inherit QObject, or a compilation or link error will result. +.PP +See also Object Model. +.SH MEMBER FUNCTION DOCUMENTATION +.SH "QGuardedPtr::QGuardedPtr ()" +Constructs a 0 guarded pointer. +.PP +See also isNull(). +.SH "QGuardedPtr::QGuardedPtr ( T * p )" +Constructs a guarded pointer that points to same object as \fIp\fR points to. +.SH "QGuardedPtr::QGuardedPtr ( const QGuardedPtr<T> & p )" +Copy one guarded pointer from another. The constructed guarded pointer points to the same object that \fIp\fR points to (which may be 0). +.SH "QGuardedPtr::~QGuardedPtr ()" +Destroys the guarded pointer. Just like a normal pointer, destroying a guarded pointer does \fInot\fR destroy the object being pointed to. +.SH "bool QGuardedPtr::isNull () const" +Returns \fCTRUE\fR if the referenced object has been destroyed or if there is no referenced object; otherwise returns FALSE. +.SH "QGuardedPtr::operator T * () const" +Cast operator; implements pointer semantics. Because of this function you can pass a QGuardedPtr<X> to a function where an X* is retquired. +.SH "bool QGuardedPtr::operator!= ( const QGuardedPtr<T> & p ) const" +Inequality operator; implements pointer semantics, the negation of operator==(). Returns TRUE if \fIp\fR and this guarded pointer are not pointing to the same object; otherwise returns FALSE. +.SH "T & QGuardedPtr::operator* () const" +Dereference operator; implements pointer semantics. Just use this operator as you would with a normal C++ pointer. +.SH "T * QGuardedPtr::operator-> () const" +Overloaded arrow operator; implements pointer semantics. Just use this operator as you would with a normal C++ pointer. +.SH "QGuardedPtr<T> & QGuardedPtr::operator= ( const QGuardedPtr<T> & p )" +Assignment operator. This guarded pointer then points to the same object as \fIp\fR points to. +.SH "QGuardedPtr<T> & QGuardedPtr::operator= ( T * p )" +This is an overloaded member function, provided for convenience. It behaves essentially like the above function. +.PP +Assignment operator. This guarded pointer then points to the same object as \fIp\fR points to. +.SH "bool QGuardedPtr::operator== ( const QGuardedPtr<T> & p ) const" +Equality operator; implements traditional pointer semantics. Returns TRUE if both \fIp\fR and this guarded pointer are 0, or if both \fIp\fR and this pointer point to the same object; otherwise returns FALSE. +.PP +See also operator!=(). + +.SH "SEE ALSO" +.BR http://doc.trolltech.com/qguardedptr.html +.BR http://www.trolltech.com/faq/tech.html +.SH COPYRIGHT +Copyright 1992-2007 Trolltech ASA, http://www.trolltech.com. See the +license file included in the distribution for a complete license +statement. +.SH AUTHOR +Generated automatically from the source code. +.SH BUGS +If you find a bug in Qt, please report it as described in +.BR http://doc.trolltech.com/bughowto.html . +Good bug reports help us to help you. Thank you. +.P +The definitive Qt documentation is provided in HTML format; it is +located at $QTDIR/doc/html and can be read using Qt Assistant or with +a web browser. This man page is provided as a convenience for those +users who prefer man pages, although this format is not officially +supported by Trolltech. +.P +If you find errors in this manual page, please report them to +.BR qt-bugs@trolltech.com . +Please include the name of the manual page (qguardedptr.3qt) and the Qt +version (3.3.8). |