Witam.
Jestem już w dość zaawansowanej fazie projektu. Tworzę aplikację w Qt z wykorzystaniem MVC (własna implementacja). Mam klasę kontrolera, widoku i klasy pomocnicze (modele). Każdy kontroler jako pole trzyma wskaźnik na klasę widoku (-ów), które obsługuje. Kontroler może zawierać też subkontrolery, zarządzające jakąś mniejszą częścią aplikacji. I tak np. mam coś takiego
MainController
-MainView
-GameController //subkontroler
--GameView
--ChessBoardController //subkontroler
---ChessBoardView
--ChessPanelController //subkontroler
---ChessPanelView
Problem polega na tym, że np. ChessPanelView zawiera kontrolkę (dajmy na to button), który musi przekazać zdarzenie za pomocą sygnału lub slotu do MainControllera. Oczywiście nie jest to problemem, wystarczy w klasie MainController zrobić coś takiego
connect(gameController->getChessPanelController()->getChessPanelView()), SIGNAL(jakissygnal), this, SLOT(jakisslot));
Jak widać tworzy się brzydki wężyk (strach pomyśleć co by było gdyby tych subkontrolerów było więcej). Nie wiem czy to jest mój błąd projektowy (wydaje mi się jednak że z projektem jest OK, bo każdy kontroler ma świetnie przypisane zadania, wszystko jest przejrzyste i w ogóle cacy :P) czy może to jedyne wyjście? Oczywiście często będzie się zdarzało że muszę przekazać jakieś dane z któregoś subkontrolera wyżej i taka sytuacja będzie bardzo częsta.