• [^] # Re: signals/slots?

    Posté par . En réponse à la dépêche Qt Software ouvre Qt à la communauté et publie Qt Jambi 4.5. Évalué à 2.

    Non le réel intérêt, c'est que les évènements ont bien plus de "sens". On peut par exemple connecter le signal "currentFontChanged" d'un widget de sélection de font à la méthode (qui est aussi un slot) "setFont" d'un widget d'édition de texte.


    De plus, le fait de pouvoir utiliser n'importe quelle méthode et ne pas être forcé par le nom évite de devoir faire comme en Java (de mémoire) au choix :

    public void actionPerformed(Event ev) { // un bouton cliqué
    if (ev.getSource() == monBouton1) {
    // faire un truc
    } else if (ev.getSource() == monBouton2) {
    // etc
    }
    }

    ou

    monBouton1.addActionListener(new ActionListener() {
    public void actionPerformed(Event ev) {
    // faire un truc
    }
    });
    monBouton2.addActionListener(new ActionListener() {
    public void actionPerformed(Event ev) {
    // etc
    }
    });


    Mais faire (de mémoire)

    connect(monBouton1, SIGNAL("clicked()"), monObjet, SLOT("bouton1clique"));
    connect(monBouton2, SIGNAL("clicked()"), monObjet, SLOT("bouton2clique"));

    Et avoir une méthode séparée pour chaque.