DtkCore
DTK Core module
Dtk::Core::DObject类 参考

一些宏的定义. 更多...

#include <>>

类 Dtk::Core::DObject 继承关系图:
Dtk::Core::DBaseFileWatcher Dtk::Core::DConfig Dtk::Core::DConfigFile Dtk::Core::DFileSystemWatcher Dtk::Core::DFileWatcherManager Dtk::Core::DTimedLoop Dtk::Core::DTrashManager Dtk::Core::DUtil::DExportedInterface

Protected 成员函数

 DObject (DObject *parent=nullptr)
 只有在不需要数据成员的派生类中才会使用 parent 父类指针
 
 DObject (DObjectPrivate &dd, DObject *parent=nullptr)
 在派生类中比较常用的构造函数 dd 私有类对象
 

Protected 属性

QScopedPointer< DObjectPrivated_d_ptr
 

详细描述

一些宏的定义.

\inmodule dtkcore

\inmodule dtkcore

deepin-tool-kit 中所有公开类的祖先类.

通过和 D_DECLARE_PRIVATE 、D_DECLARE_PUBLIC 等宏的配合方便派生类中实现 D-Point 结构。虽然 QObject 中已经有了这样的实现结构,但是没有 办法在不使用 Qt 私有模块的情况下,在 DTK 库中达到同样的目的。D-Point 结构由“公共接口类” 和“私有数据类”两部分组成,在 DTK 中,DObjectPrivate 是所有数据类的祖先类。在这种结构下, 只有 DObject 这个基类中定了一个指向于私有数据类的对象指针,派生类中不会也不应该再定义任何 成员变量,派生类中需要添加数据成员时,可以继承 DObjectPrivate,将新的成员变量放到私有类中

例子:

a.h

class APrivate;
class A : public DObject
{
D_DECLARE_PRIVATE(A)
public:
A();
int test() const;
protected:
A(APrivate &dd, DObject *parent = nullptr);
};
一些宏的定义.
Definition: dobject.h:38

a.cpp

class APrivate : public DObjectPrivate
{
public:
APrivate(A *qq)
{
}
D_DECLARE_PUBLIC(A)
// 此处添加数据成员
int data;
};
A::A()
: DObject(*new APrivate(this))
{
}
int test() const
{
D_D(A);
return d->data;
}
A::A(APrivate &dd, DObject *parent)
: DObject(dd, parent)
{
}
Definition: dobject_p.h:27
DObject(DObject *parent=nullptr)
只有在不需要数据成员的派生类中才会使用 parent 父类指针
Definition: dobject.cpp:112

一般来讲,DObject 只会用在 DTK 库中定义的类,对于使用 DTK 库的应用程序来说不用关心它的存在

参见
{https://wiki.qt.io/D-Pointer/zh}{类的 D-Point 结构}

该类的文档由以下文件生成: