重点:QObject 的拷贝构造和赋值操作——私有

QObject 中没有提供一个拷贝构造函数和赋值操作符给外界使用,其实拷贝构造和赋值的操作都是已经声明了的,但是它们被使用了Q_DISABLE_COPY () 宏放在了private区域。因此所有继承自QObject的类都使用这个宏声明了他们的拷贝构造函数和赋值操作符为私有。

为什么要这样做?

 

我 们都知道Qt对标准C++增加了一些功能:signals, slots, object properties, events, event filters, string translation, timers,object trees, guarded pointers, dynamic cast.

新加入的这些功能就要求我们把每一个QObject的对象看做是唯一(identities)的。唯一的意思就是不能通过拷贝或者赋值操作

制作出一个一模一样的复制体。

试 想如果我们有一个QPushButton对象btnSubmit,如果我们可以复制出一个和btnSubmint完全一样的button对象,那么新的 button对象的名字应该是什么?如果也叫btnSubmit,当我们给其中的btnSubmit接收事件或发出信号时,系统如何区分把事件由哪个 button对象接收,或者哪个对象发送了信号?

 

我们知道在各种容器中能以value方式存放的类型,必须有默认的构造函数,拷贝构造函数和赋值操作。由于QObject及所有继承自它的子类都没 有提供拷贝构造和赋值操作,当我们使用QList<QObject>时,编译器就会报错。如果我们要在容器中存储这中类型的对象,我们就要使 用它们的指针。如QList<QObject *>

 

转自:http://wan-2004.iteye.com/blog/1134186

posted on 2017-03-16 14:43  苦涩的茶  阅读(483)  评论(0编辑  收藏  举报

// 1.生成目录索引列表