But I simply get information about widgets in another thread. Why would that cause a problem ? :(
Because you are still sending X protocol messages back and forth. toGlobal() is sure to query the X server about the actual position of the widget (since it may have been moved by some other mean). So unfortunately, 'just getting some information' is not a const operation as far as X is concerned. Actually, moving your mouse from the test thread is a big no-no as well for the same reason.
In your case, I would simply use a zero-timeout QTimer/processEvents and forget about the thread; it's not worth the trouble of setting up queues to move events back and forth, not to mention you need to add mutexes (!) to your code.