As @musicamante mentioned solution was to use QTimer class instance and bind .timeout() slot to function, that changes cursor's shapes periodically. No mulithreading necessary.