我正在尝试创建一个类,公开 QObject 派生类(具有其自己的 qt 属性)的集合(或多个),我可以在 qml 中使用 qt 属性。
根据http://qt-project.org/doc/qt-5.0/qtcore/qobject.html#no-copy-constructor-or-assignment-operator http://qt-project.org/doc/qt-5.0/qtcore/qobject.html#no-copy-constructor-or-assignment-operatorqt 不能很好地使用复制构造函数。
所以我用了QList<QObject derived class>
(我的第一个想法)我无法通过引用传递列表(或者至少我认为这就是编译器错误所暗示的)(需要副本)并且很难弄清楚如何将项目添加到列表中。
我应该使用QList<QObject derived class *>
or QList<SomeQTSmartPointer<QObject derived class>>
或者是其他东西?
我应该使用QList<QObject derived class *>
or QList<SomeQTSmartPointer<QObject derived class>>
或者是其他东西?
两者都很好,但一般来说,通过 Qt 父/子机制坚持前者更好。一般来说,这将是最 Qt'ish 的管理方式:
QList<MyClass*> list;
list.append(new MyClass(parent);
您还可以使用 Qt 智能指针,例如 QPointer、QScopedPointer 或 QSharedPointer,如下所示:
QList<QShardPointer<MyClass> > list;
// Being explicit to be more comprehensive, but it is not necessary
list.append(QSharedPointer<MyClass>(new MyClass());
这适用于 C++11 之前的版本和之后的版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)