title: How do you append an object to QList?
body: <p>I'm trying to create a list of objects using QList, but I'm getting an error when I try to add to the list. It works if I use QString as the object, but not if I use TestClass.</p>
  
  <p>updated main.cpp that works. is this the correct way of doing things?</p>
  
  <pre><code>#include &lt;QCoreApplication&gt;
  #include &lt;QDebug&gt;
  
  #include "testclass.h"
  
  int main(int argc, char *argv[])
  {
      QCoreApplication a(argc, argv);
  
      QList&lt;TestClass*&gt; test_list;
  
      TestClass* test_1 = new TestClass;
      test_1-&gt;test_varialbe = 1;
      test_list.append(test_1);
  
      TestClass* test_2 = new TestClass;
      test_2-&gt;test_varialbe = 2;
      test_list.append(test_2);
  
      foreach(TestClass* t, test_list) {
          qWarning() &lt;&lt; t-&gt;test_varialbe;
      }
  
      return a.exec();
  }
  </code></pre>
  
  <p>main.cpp</p>
  
  <pre><code>#include &lt;QCoreApplication&gt;
  
  #include "testclass.h"
  
  int main(int argc, char *argv[])
  {
      QCoreApplication a(argc, argv);
  
      QList&lt;TestClass&gt; test_list;
      TestClass test;
      test_list.append(test);
  
      return a.exec();
  }
  </code></pre>
  
  <p>testclass.h</p>
  
  <pre><code>#ifndef TESTCLASS_H
  #define TESTCLASS_H
  
  #include &lt;QObject&gt;
  
  class TestClass : public QObject
  {
      Q_OBJECT
  public:
      explicit TestClass(QObject *parent = 0);
      int test_varialbe;
  
  signals:
  
  public slots:
  
  };
  
  #endif // TESTCLASS_H
  </code></pre>
  
  <p>testclass.cpp</p>
  
  <pre><code>#include "testclass.h"
  
  TestClass::TestClass(QObject *parent) :
      QObject(parent)
  {
  }
  </code></pre>
  
  <p>error</p>
  
  <pre><code>In file included from ../poo/main.cpp:3:
  ../poo/testclass.h:6:7: error: base class 'QObject' has private copy constructor
  class TestClass : public QObject
        ^
  /Users/waspinator/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qlist.h:691:9: note: in instantiation of member function 'QList&lt;TestClass&gt;::node_copy' requested here
          node_copy(reinterpret_cast&lt;Node *&gt;(p.begin()),
          ^
  /Users/waspinator/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qlist.h:520:19: note: in instantiation of member function 'QList&lt;TestClass&gt;::detach_helper_grow' requested here
          Node *n = detach_helper_grow(INT_MAX, 1);
                    ^
  ../poo/main.cpp:11:15: note: in instantiation of member function 'QList&lt;TestClass&gt;::append' requested here
      test_list.append(test);
                ^
  /Users/waspinator/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qobject.h:465:20: note: declared private here
      Q_DISABLE_COPY(QObject)
                     ^
  /Users/waspinator/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qglobal.h:1000:5: note: expanded from macro 'Q_DISABLE_COPY'
      Class(const Class &amp;) Q_DECL_EQ_DELETE;\
      ^
  /Users/waspinator/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qlist.h:400:34: note: implicit copy constructor for 'TestClass' first required here
                  current-&gt;v = new T(*reinterpret_cast&lt;T*&gt;(src-&gt;v));
                                   ^
  /Users/waspinator/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qlist.h:413:31: error: no matching constructor for initialization of 'TestClass'
                  new (current) T(*reinterpret_cast&lt;T*&gt;(src));
                                ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~
  ../poo/testclass.h:10:14: note: candidate constructor not viable: no known conversion from 'TestClass' to 'QObject *' for 1st argument; remove *
      explicit TestClass(QObject *parent = 0);
               ^
  In file included from ../poo/main.cpp:1:
  In file included from ../Qt/5.3/clang_64/lib/QtCore.framework/Versions/5/Headers/QCoreApplication:1:
  In file included from ../Qt/5.3/clang_64/lib/QtCore.framework/Versions/5/Headers/qcoreapplication.h:48:
  In file included from /Users/waspinator/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qobject.h:51:
  /Users/waspinator/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qlist.h:373:69: error: no matching constructor for initialization of 'TestClass'
      if (QTypeInfo&lt;T&gt;::isLarge || QTypeInfo&lt;T&gt;::isStatic) n-&gt;v = new T(t);
                                                                      ^ ~
  /Users/waspinator/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qlist.h:522:13: note: in instantiation of member function 'QList&lt;TestClass&gt;::node_construct' requested here
              node_construct(n, t);
              ^
  ../poo/main.cpp:11:15: note: in instantiation of member function 'QList&lt;TestClass&gt;::append' requested here
      test_list.append(test);
                ^
  ../poo/testclass.h:10:14: note: candidate constructor not viable: no known conversion from 'const TestClass' to 'QObject *' for 1st argument
      explicit TestClass(QObject *parent = 0);
               ^
  3 errors generated.
  make: *** [main.o] Error 1
  14:37:52: The process "/usr/bin/make" exited with code 2.
  Error while building/deploying project poo (kit: Desktop Qt 5.3.0 clang 64bit)
  When executing step 'Make'
  </code></pre>