You don't have to be afraid of passing a huge list by value. It is cheap because it is implicit shared. So it's like passing a pointer.
I hope you mean "passing a huge QList"

IMHO, passing a QList, QString ect. by value is bad.
I know about implicit data sharing in QT, but this can introduce bad programming habits in general (especially for begginers).