Come fare per riferirsi ad un campo di un'altra classe



  • Buonasera.
    Vi prego di darmi una conferma o una smentita.
    Se ho due classi (Classe1 e Classe2) e mi trovo su Classe1, se ho bisogno di conoscere il valore di un campo di Classe2 posso utilizzare il riferimento diretto così: Classe2->LeggiValoreCampo2().
    Se invece mentre sto in Classe1 devo modificare un campo in Classe2 non è corretto utilizzare il riferimento diretto (Classe2->ScriviValoreCampo2(NuovoValore)) ma si deve utilizzare un segnale e richiamare il metodo di aggiornamento così:
    emit ScriviValoreCampo2(NuovoValore)).
    E' così ?



  • Bhe puoi scriverti i segnali slot he passano il valore da una all'altra classe .. oppure integrare la classe 2 nella 1, ma di regola per risparmio di tempo si inizia con le classi inferiori le quali vanno poi subclassate nelle superiori... per quello scrivendo i progetti si fanno tanti piccoli moduli come in playmobil o lego i quali poi si reintegrano .. in una applicazione grande...
    Subclassando la classe prende sempre piu maggior numero di funzioni crescendo poi nel vero programma.. facendo in questo modo i singoli componenti possono essere ottimizzati al massimo velocita e funzione... altrimenti quanto il tutto è composto non si vede piu bene dove la velocita non è ottima... e o cercare errori non è poi facile...
    sperando he ti aiuto questo punto di vista...



  • Ti ringrazio, ma non mi hai tolto il dubbio. Gli slots e i connect si usano solo per poter modificare un campo di una classe dall'esterno della classe stessa. E' così o no ? Per poter esaminare il valore di un campo di un'altra classe non vedo come poter creare uno slot e acquisire un valore con un connect.



  • @bvox123 said in Come fare per riferirsi ad un campo di un'altra classe:

    Gli slots e i connect si usano solo per poter modificare un campo di una classe dall'esterno della classe stessa

    Non solo.

    S.O.L.I.D. sono principi fondanti della programmazione a oggetti. Questi implicano che se un oggetto di tipo Classe1 crea un oggetto di tipo Classe2, l'oggetto Classe2 non deve avere alcuna idea di chi o cosa sia l'oggetto a monte. Non e' la responsabilita' di Classe2 cabiare cose a monte di essa. Usiamo i signal e slot per permettere a Classe2 di dire all'esterno che qualcosa e' cambiato ma e' la responsabilita' di chi e' a monte (Classe1) di reagire al cambiamento


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.