Sasume (./138) :
Une façon simple de faire ça c’est de configurer ton bouton à l’initialisation en lui passant en paramètre l’action à réaliser. Et au moment convenu, le bouton exécutera l’action. Qu’est-ce qu’une Action ? Ça peut être une classe abstraite (ce qu’on appelle une interface en conception objet) qui contient une opération virtuelle pure (abstraite) : execute(). Tu pourras ainsi simplement créer une classe pour chaque action, lui faire implémenter l’opération execute() où tu lui feras faire ce que tu voudras, et ensuite passer une instance de cet classe en paramètre à ton icône, qui se chargera d’appeler sa méthode execute.
C'est du bidouillage, tout ça. En fait, le concept que tu cherches, c'est
http://doc.qt.nokia.com/4.7-snapshot/signalsandslots.html.

Et sinon, en C++, on utilise normalement
operator() plutôt que
execute.

(vu qu’en C++ on ne peux pas écrire de classes anonymes…)
Euh si, on peut:
class {
…
} x;
Et on peut aussi coller plusieurs classes non-anonymes dans le même
.cpp.
Sinon, une façon très confortable de résoudre le problème est d’utiliser un mécanisme de signals/slots, similaire à celui fournit par Qt ou Boost. C’est un peu plus long à coder (sauf si tu utilises directement celui de Boost)
… ou celui de Qt.

Il y a aussi la libQtCore, hein, on peut utiliser le C++ amélioré de Qt même sans avoir une interface graphique en Qt.