Starting multiple threads - at once or with a small break in between?

I'm writing an application which is using multiple threads to load some data to keep the GUI responsive. Number of threads and work time for each thread is unknown - depends on the amount of data to load. At first I'm calculating the amount of threads needed to load the data. This number may be between 1 and 100. Now the question is - should I start all of those threads in one loop like:
@for(int i = 0; i < amountOfThreadsNeeded; i++) {
MyThread* t = new MyThread();
connect(t, SIGNAL(finished()), SLOT(threadFinished()));
t->start();
}@

Hi,
The number of threads doesn't really matter in this case. When more threads then cores are created the threads will be run consecutive of each other. So maybe limit the number of threads to minimize the changes of threadraces etc.
Maybe take a look at QThreadPool "QThreadPool":http://qt-project.org/doc/qt-5.0/qtcore/qthreadpool.html#details
It is designed for this kind of implementation.

The thing is that as soon as the thread is done loading the data I need to get a pointer to a QList of pointers to objects that this thread created. As soon as the thread is deleted the list itself is deleted as well (not the objects pointed in the list). Therefore I need to get the list and copy all pointers from it to a different list before I delete the thread.

Let me put some actual code in so you can tell me if I'm doing things right.

The above class is iterating through a directory and loads up files into memory. Each thread gets a startFrom parameter which tells it how many files should it skip before starting to load so that one file won't get loaded twice.

// This one actually creates the thread and appends it to a QList so I have track of them
void MainWindow::startLoadingThread(QString path) {
RLT* r = new RLT(path, threadsStarted * 100);
connect(r, SIGNAL(finished()), SLOT(repsLoaded()));
rlts.append(r);
r->start();
}