您几乎不得不使用Qt的成语,即拥有GUI对象的原始指针,因为QWidget派生类型将假定子元素的所有权。
Qt为了防止开发者出错,将QObject的类拷贝构造函数和赋值操作符都DISABLE了。这样做的好处是,一旦开发者不小心定义了一个QList<QObject>的容器,在添加对象时就会得到一个编译错误,从而避免发生隐式拷贝。 总结,使用容器类存储对象时,最好使用对象指针类型,如:QList<TestObj*>,而不要使用 QList<TestObj> 这样的定...
要完全确定不是这种情况,请尝试使用QScopedPointer,它类似于std::unique_ptr。
要完全确定不是这种情况,请尝试使用QScopedPointer,它类似于std::unique_ptr。
3. 使用Qt智能指针来管理堆上的对象,然后添加到容器 1 // main.cpp 2 #include <QCoreApplication> 3 #include <QList> 4 #include <QSharedPointer> 5 6 #include "testobj.h" 7 8 int main(int argc, char *argv[]) 9 { 10 QCoreApplication a(argc, argv); ...