3#include <QScopedPointer>
11#define DA_VERSION_MAJ 0
14#define DA_VERSION_MIN 0
17#define DA_VERSION_PAR 4
23#ifndef DA_IMPL_FORWARD_DECL
24#define DA_IMPL_FORWARD_DECL(ClassName) class ClassName##Private;
31#ifndef DA_IMPL_FORWARD_DECL_NS
32#define DA_IMPL_FORWARD_DECL_NS(NS, ClassName) \
35 class ClassName##Private; \
44#define DA_IMPL(Class) \
46 inline Class##Private* d_func() \
48 return (d_ptr.data()); \
50 inline const Class##Private* d_func() const \
52 return (d_ptr.data()); \
54 friend class Class##Private; \
55 QScopedPointer< Class##Private > d_ptr;
63#define DA_IMPL_PUBLIC(Class) \
64 inline Class* q_func() \
66 return (static_cast< Class* >(q_ptr)); \
68 inline const Class* q_func() const \
70 return (static_cast< const Class* >(q_ptr)); \
115#ifndef DA_DECLARE_PRIVATE
116#define DA_DECLARE_PRIVATE(classname) \
118 friend class classname::PrivateData; \
119 std::unique_ptr< PrivateData > d_ptr; \
120 inline PrivateData* d_func() \
122 return (d_ptr.get()); \
124 inline const PrivateData* d_func() const \
126 return (d_ptr.get()); \
136#ifndef DA_DECLARE_PUBLIC
137#define DA_DECLARE_PUBLIC(classname) \
138 friend class classname; \
139 classname* q_ptr { nullptr }; \
140 inline classname* q_func() \
142 return (static_cast< classname* >(q_ptr)); \
144 inline const classname* q_func() const \
146 return (static_cast< const classname* >(q_ptr)); \
155#ifndef DA_PIMPL_CONSTRUCT
156#define DA_PIMPL_CONSTRUCT d_ptr(std::make_unique< PrivateData >(this))
164#define DA_D(pointerName) PrivateData* pointerName = d_func()
172#define DA_DC(pointerName) const PrivateData* pointerName = d_func()
180#define DA_Q(classname, pointerName) classname* pointerName = q_func()
188#define DA_QC(classname, pointerName) const classname* pointerName = q_func()
204#ifndef Qt5Qt6Compat_QXXEvent_Pos
205#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
206#define Qt5Qt6Compat_QXXEvent_Pos(valuePtr) valuePtr->pos()
208#define Qt5Qt6Compat_QXXEvent_Pos(valuePtr) valuePtr->position().toPoint()
220#ifndef Qt5Qt6Compat_QXXEvent_x
221#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
222#define Qt5Qt6Compat_QXXEvent_x(valuePtr) valuePtr->pos().x()
224#define Qt5Qt6Compat_QXXEvent_x(valuePtr) valuePtr->position().x()
236#ifndef Qt5Qt6Compat_QXXEvent_y
237#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
238#define Qt5Qt6Compat_QXXEvent_y(valuePtr) valuePtr->pos().y()
240#define Qt5Qt6Compat_QXXEvent_y(valuePtr) valuePtr->position().y()
247#ifndef Qt5Qt6Compat_fontMetrics_width
248#if QT_VERSION < QT_VERSION_CHECK(5, 12, 0)
249#define Qt5Qt6Compat_fontMetrics_width(fontMeter, str) fontMeter.width(str)
251#define Qt5Qt6Compat_fontMetrics_width(fontMeter, str) fontMeter.horizontalAdvance(str)
255#ifndef Qt5Qt6Compat_Connect_ButtonGroupClicked_int
256#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
257#define Qt5Qt6Compat_Connect_ButtonGroupClicked_int(buttonGroup, funName) \
259 connect(buttonGroup, QOverload< int >::of(&QButtonGroup::buttonClicked), this, &funName); \
262#define Qt5Qt6Compat_Connect_ButtonGroupClicked_int(buttonGroup, funName) \
264 connect(buttonGroup, &QButtonGroup::idClicked, this, &funName); \
269#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
270template<
typename T >
271uint qHash(
const std::shared_ptr< T >& ptr, uint seed = 0)
273 return qHash(ptr.get(), seed);
302#ifndef DA_AUTO_REGISTER_META_TYPE
303#define DA_CONCAT_(a, b) a##b
304#define DA_CONCAT(a, b) DA_CONCAT_(a, b)
305#define DA_MAKE_UNIQUE_NAME(base) DA_CONCAT(base, __LINE__)
306#define DA_AUTO_REGISTER_META_TYPE(Type) \
309 static const struct DA_MAKE_UNIQUE_NAME(DA_MetaTypeRegistrar_) \
311 inline DA_MAKE_UNIQUE_NAME(DA_MetaTypeRegistrar_)() \
313 qRegisterMetaType< Type >(); \
315 } DA_MAKE_UNIQUE_NAME(DA_MetaTypeRegistrar_instance_); \
序列化类都是带异常的,使用中需要处理异常
Definition AppMainWindow.cpp:44
DAWorkbenchFeatureType
工作台区域类型
Definition DAGlobals.h:325