title: Sending objects as signal arguments between threads in Qt
body: <p>I am new to Qt and trying to learn the Qt threading mechanism. I am in a situation where I would like a background thread to perform some long running task and report the results to another (or main) thread after processing every 100 items. Right now I am doing this by emitting a signal from the background thread containing a list of the processed objects that is received in a slot in the main thread. Does Qt make a copy of the signal argument when it is received in the slot ? If so, how does how does calling <code>qRegisterMetaType</code> help with that ? This is what I am tying to accomplish in my code :</p>
  
  <pre><code>//background thread
  void run(){
     //get a query object from database
     int fireCount = 0;
     QList&lt; QList&lt;QVariant&gt; &gt; data;
     while(query-&gt;next()){
          fireCount++;
          QList&lt;QVariant&gt; row;
          //do some calculations on the fields read from the query
          processRow(query,&amp;row);
          data.append(row);
          if(fireCount&gt;100){
              emit publishDataToMainThread(data);
              fireCount = 0;
              data.clear();
          }
     }
  
  }
  
  //slot in main thread
  void receiveData(QList&lt; QList&lt;Qvariant&gt; &gt; data){
  \\display the data
  }
  </code></pre>
  
  <p>Also , is this a recommended practice for transferring objects between threads ?</p>