Struct qt_core::QBox

source ·
pub struct QBox<T: StaticUpcast<QObject> + CppDeletable>(/* private fields */);
Expand description

An owning pointer for QObject-based objects.

QBox will delete its object on drop if it has no parent. If the object has a parent, it’s assumed that the parent is responsible for deleting the object, as per Qt ownership system. Additionally, QBox will be automatically set to null when the object is deleted, similar to QPtr (or QPointer<T> in C++). QBox will not attempt to delete null pointers.

Note that dereferencing a null QBox will panic, so if it’s known that the object may already have been deleted, you should use is_null(), as_ref(), or a similar method to check if the object is still alive before calling its methods.

Unlike CppBox (which is non-nullable), QBox is permitted to contain a null pointer because even if a non-null pointer is provided when constructing QBox, it will become null automatically if the object is deleted.

To prevent the object from being deleted, convert QBox to another type of pointer using into_q_ptr() or into_ptr(). Alternatively, setting a parent for the object will prevent QBox from deleting it.

To make sure the object is deleted regardless of its parent, convert QBox to CppBox using into_box().

Safety

QBox has the same safety issues as QPtr. See QPtr documentation.

Implementations§

source§

impl<T: StaticUpcast<QObject> + CppDeletable> QBox<T>

source

pub unsafe fn from_q_ptr(target: QPtr<T>) -> Self

Creates a QBox from a QPtr.

Safety

See type level documentation.

source

pub unsafe fn new(target: impl CastInto<Ptr<T>>) -> Self

Creates a QBox from a Ptr.

Safety

target must be either a valid pointer to an object or a null pointer. See type level documentation.

source

pub unsafe fn from_raw(target: *const T) -> Self

Creates a QBox from a raw pointer.

Safety

target must be either a valid pointer to an object or a null pointer. See type level documentation.

source

pub unsafe fn null() -> Self

Creates a null pointer.

Note that you can also use NullPtr to specify a null pointer to a function accepting impl CastInto<Ptr<_>>. Unlike Ptr, NullPtr is not a generic type, so it will not cause type inference issues.

Note that accessing the content of a null QBox through Deref will result in a panic.

Safety

Null pointers must not be dereferenced. See type level documentation.

source

pub unsafe fn is_null(&self) -> bool

Returns true if the pointer is null.

source

pub unsafe fn as_ptr(&self) -> Ptr<T>

Returns the content as a const Ptr.

Safety

See type level documentation.

source

pub unsafe fn as_raw_ptr(&self) -> *const T

Returns the content as a raw const pointer.

Safety

See type level documentation.

source

pub unsafe fn as_mut_raw_ptr(&self) -> *mut T

Returns the content as a raw mutable pointer.

Safety

See type level documentation.

source

pub unsafe fn as_ref(&self) -> Option<Ref<T>>

Returns the content as a const Ref. Returns None if self is a null pointer.

Safety

See type level documentation.

source

pub unsafe fn as_raw_ref<'a>(&self) -> Option<&'a T>

Returns a reference to the value. Returns None if the pointer is null.

Safety

self must be valid. The content must not be read or modified through other ways while the returned reference exists.See type level documentation.

source

pub unsafe fn as_mut_raw_ref<'a>(&self) -> Option<&'a mut T>

Returns a mutable reference to the value. Returns None if the pointer is null.

Safety

self must be valid. The content must not be read or modified through other ways while the returned reference exists.See type level documentation.

source

pub unsafe fn static_upcast<U>(&self) -> QPtr<U>

Converts the pointer to the base class type U.

Safety

This operation is safe as long as self is valid or null. See type level documentation.

source

pub unsafe fn static_downcast<U>(&self) -> QPtr<U>

Converts the pointer to the derived class type U.

It’s recommended to use dynamic_cast instead because it performs a checked conversion.

Safety

This operation is safe as long as self is valid and it’s type is U or inherits from U, of if self is a null pointer. See type level documentation.

source

pub unsafe fn dynamic_cast<U>(&self) -> QPtr<U>
where T: DynamicCast<U>, U: StaticUpcast<QObject>,

Converts the pointer to the derived class type U. Returns None if the object’s type is not U and doesn’t inherit U.

Safety

This operation is safe as long as self is valid or null. See type level documentation.

source

pub unsafe fn into_box(self) -> Option<CppBox<T>>

Converts this pointer to a CppBox. Returns None if self is a null pointer.

Unlike QBox, CppBox will always delete the object when dropped.

Safety

CppBox will attempt to delete the object on drop. If something else also tries to delete this object before or after that, the behavior is undefined. See type level documentation.

source

pub unsafe fn into_q_ptr(self) -> QPtr<T>

Converts this QBox into a QPtr.

Unlike QBox, QPtr will never delete the object when dropped.

Safety

See type level documentation.

source

pub unsafe fn into_ptr(self) -> Ptr<T>

Converts this QBox into a Ptr.

Unlike QBox, Ptr will never delete the object when dropped.

Safety

See type level documentation.

source

pub unsafe fn into_raw_ptr(self) -> *mut T

Converts this QBox into a raw pointer without deleting the object.

Safety

See type level documentation.

Trait Implementations§

source§

impl<'a, T, U> Add<U> for &'a QBox<T>

§

type Output = <&'a T as Add<U>>::Output

The resulting type after applying the + operator.
source§

fn add(self, rhs: U) -> Self::Output

Performs the + operation. Read more
source§

impl<'a, T> AsReceiver for &'a QBox<T>

§

type Arguments = <T as AsReceiver>::Arguments

Argument types expected by this receiver.
source§

fn as_receiver(&self) -> Receiver<Self::Arguments>

Returns information about this receiver.
source§

impl<'a, T, U> BitAnd<U> for &'a QBox<T>

§

type Output = <&'a T as BitAnd<U>>::Output

The resulting type after applying the & operator.
source§

fn bitand(self, rhs: U) -> Self::Output

Performs the & operation. Read more
source§

impl<'a, T, U> BitOr<U> for &'a QBox<T>

§

type Output = <&'a T as BitOr<U>>::Output

The resulting type after applying the | operator.
source§

fn bitor(self, rhs: U) -> Self::Output

Performs the | operation. Read more
source§

impl<'a, T, U> BitXor<U> for &'a QBox<T>

§

type Output = <&'a T as BitXor<U>>::Output

The resulting type after applying the ^ operator.
source§

fn bitxor(self, rhs: U) -> Self::Output

Performs the ^ operation. Read more
source§

impl<'a, T, U> CastFrom<&'a QBox<U>> for Ptr<T>

source§

unsafe fn cast_from(value: &'a QBox<U>) -> Self

Performs the conversion. Read more
source§

impl<T: StaticUpcast<QObject> + CppDeletable> Debug for QBox<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T: StaticUpcast<QObject> + CppDeletable> Deref for QBox<T>

Allows to call member functions of T and its base classes directly on the pointer.

Panics if the pointer is null.

§

type Target = T

The resulting type after dereferencing.
source§

fn deref(&self) -> &T

Dereferences the value.
source§

impl<'a, T, U> Div<U> for &'a QBox<T>

§

type Output = <&'a T as Div<U>>::Output

The resulting type after applying the / operator.
source§

fn div(self, rhs: U) -> Self::Output

Performs the / operation. Read more
source§

impl<T: StaticUpcast<QObject> + CppDeletable> Drop for QBox<T>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl<'a, T, U> Mul<U> for &'a QBox<T>

§

type Output = <&'a T as Mul<U>>::Output

The resulting type after applying the * operator.
source§

fn mul(self, rhs: U) -> Self::Output

Performs the * operation. Read more
source§

impl<T, U> PartialEq<U> for QBox<T>

source§

fn eq(&self, rhs: &U) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<T, U> PartialOrd<U> for QBox<T>
where T: Lt<U> + Le<U> + Gt<U> + Ge<U> + PartialEq<U> + CppDeletable + StaticUpcast<QObject>,

source§

fn partial_cmp(&self, other: &U) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
source§

fn lt(&self, other: &U) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
source§

fn le(&self, other: &U) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
source§

fn gt(&self, other: &U) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
source§

fn ge(&self, other: &U) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl<'a, T, U> Rem<U> for &'a QBox<T>

§

type Output = <&'a T as Rem<U>>::Output

The resulting type after applying the % operator.
source§

fn rem(self, rhs: U) -> Self::Output

Performs the % operation. Read more
source§

impl<'a, T, U> Shl<U> for &'a QBox<T>

§

type Output = <&'a T as Shl<U>>::Output

The resulting type after applying the << operator.
source§

fn shl(self, rhs: U) -> Self::Output

Performs the << operation. Read more
source§

impl<'a, T, U> Shr<U> for &'a QBox<T>

§

type Output = <&'a T as Shr<U>>::Output

The resulting type after applying the >> operator.
source§

fn shr(self, rhs: U) -> Self::Output

Performs the >> operation. Read more
source§

impl<'a, T, U> Sub<U> for &'a QBox<T>

§

type Output = <&'a T as Sub<U>>::Output

The resulting type after applying the - operator.
source§

fn sub(self, rhs: U) -> Self::Output

Performs the - operation. Read more

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for QBox<T>
where T: RefUnwindSafe,

§

impl<T> !Send for QBox<T>

§

impl<T> !Sync for QBox<T>

§

impl<T> Unpin for QBox<T>

§

impl<T> UnwindSafe for QBox<T>
where T: RefUnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T, U> CastInto<U> for T
where U: CastFrom<T>,

source§

unsafe fn cast_into(self) -> U

Performs the conversion. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> StaticUpcast<T> for T

source§

unsafe fn static_upcast(ptr: Ptr<T>) -> Ptr<T>

Convert type of a const pointer. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.