7#include <QtCore/qsharedpointer.h>
8#include <QtCore/qtypeinfo.h>
19 static_assert(!std::is_pointer<T>::value,
"QPointer's template type must not be a pointer type");
22 using if_convertible = std::enable_if_t<std::is_convertible_v<X*, T*>,
bool>;
28 QWeakPointer<QObjectType> wp;
40 template <
typename X, if_convertible<X> = true>
43 : wp(std::exchange(
other.wp,
nullptr).internalData(),
true) {}
44 template <
typename X, if_convertible<X> = true>
47 : wp(
other.wp.internalData(),
true) {}
49 template <
typename X, if_convertible<X> = true>
56 template <
typename X, if_convertible<X> = true>
71 { wp.assign(
static_cast<QObjectType*
>(
p));
return *
this; }
74 {
return static_cast<T*
>(wp.internalData()); }
75 T*
get() const noexcept
81 operator T*()
const noexcept
85 {
return wp.isNull(); }
93#define DECLARE_COMPARE_SET(T1, A1, T2, A2) \
94 friend bool operator==(T1, T2) noexcept \
95 { return A1 == A2; } \
96 friend bool operator!=(T1, T2) noexcept \
99#define DECLARE_TEMPLATE_COMPARE_SET(T1, A1, T2, A2) \
100 template <typename X> \
101 friend bool operator==(T1, T2) noexcept \
102 { return A1 == A2; } \
103 template <typename X> \
104 friend bool operator!=(T1, T2) noexcept \
112#undef DECLARE_COMPARE_SET
113#undef DECLARE_TEMPLATE_COMPARE_SET
T * operator->() const noexcept
Q_WEAK_OVERLOAD Q_NODISCARD_CTOR QPointer(T *p)
QPointer< T > & operator=(T *p)
void swap(QPointer &other) noexcept
T & operator*() const noexcept
T * data() const noexcept
Q_NODISCARD_CTOR QPointer(QPointer< X > &&other) noexcept
Q_NODISCARD_CTOR QPointer(const QPointer< X > &other) noexcept
bool isNull() const noexcept
QPointer & operator=(QPointer< X > &&other) noexcept
QPointer & operator=(const QPointer< X > &other) noexcept
Q_NODISCARD_CTOR QPointer() noexcept=default
friend void swap(QPointer &lhs, QPointer &rhs) noexcept
Combined button and popup list for selecting options.
Q_CORE_EXPORT QWeakPointer< QObject > weakPointerFromVariant_internal(const QVariant &variant)
static ControlElement< T > * ptr(QWidget *widget)
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
#define DECLARE_TEMPLATE_COMPARE_SET(T1, A1, T2, A2)
QPointer< T > qPointerFromVariant(const QVariant &variant)
#define DECLARE_COMPARE_SET(T1, A1, T2, A2)
#define Q_DECLARE_TYPEINFO_BODY(TYPE, FLAGS)
static T * internalData(const QWeakPointer< T > &p) noexcept