The QPointer class is a template class that provides guarded pointers to QObject . 更多...
| 头: | #include <QPointer> |
| qmake: | QT += core |
| QPointer () | |
| QPointer (T * p ) | |
| ~QPointer () | |
| void | clear () |
| T * | data () const |
| bool | isNull () const |
| void | swap (QPointer<T> & other ) |
| T * | operator T * () const |
| T & | operator* () const |
| T * | operator-> () const |
| QPointer<T> & | operator= (T * p ) |
| bool | operator!= (const T * o , const QPointer<T> & p ) |
| bool | operator!= (const QPointer<T> & p , const T * o ) |
| bool | operator!= (T * o , const QPointer<T> & p ) |
| bool | operator!= (const QPointer<T> & p , T * o ) |
| bool | operator!= (const QPointer<T> & p1 , const QPointer<T> & p2 ) |
| bool | operator== (const T * o , const QPointer<T> & p ) |
| bool | operator== (const QPointer<T> & p , const T * o ) |
| bool | operator== (T * o , const QPointer<T> & p ) |
| bool | operator== (const QPointer<T> & p , T * o ) |
| bool | operator== (const QPointer<T> & p1 , const QPointer<T> & p2 ) |
The QPointer class is a template class that provides guarded pointers to QObject .
A guarded pointer,
QPointer
<T>, behaves like a normal C++ pointer
T *
, 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).
T
必须是子类化的
QObject
.
守卫指针很有用,每当需要存储的指针指向 QObject 由他人拥有,因此仍然可能在保持其引用时被销毁。可以安全地测试,指针的有效性。
Note that Qt 5 introduces a slight change in behavior when using QPointer .
Qt 还提供 QSharedPointer ,计数引用共享指针对象的实现,可以用于维护单个指针的引用集合。
范例:
QPointer<QLabel> label = new QLabel;
label->setText("&Status:");
...
if (label)
label->show();
若
QLabel
被同时删除,
label
variable will hold 0 instead of an invalid address, and the last line will never be executed.
The functions and operators available with a
QPointer
are the same as those available with a normal unguarded pointer, except the pointer arithmetic operators (
+
,
-
,
++
,和
--
), which are normally used only with arrays of objects.
使用 QPointer 像正常指针,且不需要阅读此类文档编制。
For creating guarded pointers, you can construct or assign to them from a T* 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
(). You can dereference them using either the
*x
或
x->member
表示法。
守卫指针将自动铸造成
T
*, so you can freely mix guarded and unguarded pointers. This means that if you have a
QPointer
<
QWidget
>, you can pass it to a function that requires a
QWidget
*. For this reason, it is of little value to declare functions to take a
QPointer
as a parameter; just use normal pointers. Use a
QPointer
when you are storing a pointer over time.
注意,类
T
必须继承
QObject
,否则会导致编译 (或链接) 错误。
另请参阅 QSharedPointer , QObject ,和 QObjectCleanupHandler .
Constructs a 0 guarded pointer.
另请参阅 isNull ().
构造守卫指针指向同一对象 p 所指向。
销毁守卫指针。就像正常指针,销毁守卫指针 not 销毁所指向的对象。
清零此 QPointer 对象。
该函数在 Qt 5.0 引入。
另请参阅 isNull ().
返回指向被守卫对象的指针。
该函数在 Qt 4.4 引入。
返回
true
if the referenced object has been destroyed or if there is no referenced object; otherwise returns
false
.
交换内容对于此 QPointer 采用内容源于 other 。此操作非常快且从不失败。
该函数在 Qt 5.6 引入。
Cast operator; implements pointer semantics. Because of this function you can pass a QPointer <T> to a function where a T* is required.
Dereference operator; implements pointer semantics. Just use this operator as you would with a normal C++ pointer.
Overloaded arrow operator; implements pointer semantics. Just use this operator as you would with a normal C++ pointer.
赋值运算符。此守卫指针现在将指向同一对象 p 所指向。
不相等操作符。返回
true
if
o
和守卫指针
p
未指向同一对象,否则返回
false
.
不相等操作符。返回
true
if
o
和守卫指针
p
未指向同一对象,否则返回
false
.
不相等操作符。返回
true
if
o
和守卫指针
p
未指向同一对象,否则返回
false
.
不相等操作符。返回
true
if
o
和守卫指针
p
未指向同一对象,否则返回
false
.
不相等操作符。返回
true
若守卫指针
p1
and
p2
未指向同一对象,否则返回
false
.
相等运算符。返回
true
if
o
和守卫指针
p
指向同一对象,否则返回
false
.
相等运算符。返回
true
if
o
和守卫指针
p
指向同一对象,否则返回
false
.
相等运算符。返回
true
if
o
和守卫指针
p
指向同一对象,否则返回
false
.
相等运算符。返回
true
if
o
和守卫指针
p
指向同一对象,否则返回
false
.
相等运算符。返回
true
若守卫指针
p1
and
p2
指向同一对象,否则返回
false
.