It seems it's quite annoying to use the multithreading features in Qt.
Here is another problem:

in class A, I have functionA(), functionA will call a static function functionB() in class B.
It seems I can not run functionA() in another thread,
the error is
QObject::setParent: New parent must be in the same thread as the previous parent

if I do not call B::functionB(), it works fine.

any ideas?