To avoid the trouble you can move the QThread object to the thread it contols using QObject::moveToThread().
Hmm ok, but where or when I should call this method? In Counter constructor, call from gui thread, etc...?

It might be easier if you declare a signal in your QThread subclass and connect counter's signal to the thread controller's signal and then connect the thread's signal to a slot in main window.
Do you mean I sholud define slot in BackThread and connect signal from Counter to it, and then emit signal from slot in BackThread to catch it in gui thread?

I'm not really sure why I need Counter class? What if I try to emit signal from BackThread::run instead of using Counter class?

Sorry for stupid questions, I'm totally new in QT...