1. First, create a new class that inherits from QObject to act as the worker.

  2. Add a signal in the worker class to emit the progress or result.

  3. In the main GUI class, create an instance of the worker class and connect its signal to a slot in the main GUI class using the QObject::connect method.

  4. Create a controller class that will manage the worker and connect it to the main GUI class.

  5. Set up any additional logic in the controller class to handle the interactions between the worker and the GUI.

  6. Finally, use the controller class to start and manage the worker from the GUI interface.