2009-09-19 6 views
1

Je commence avec QT. J'ai lu quelques tutoriels, et je pense avoir une compréhension des signaux et des slots. J'écris une interface graphique qui a plusieurs boutons qui changent l'état de mon programme principal. Ainsi, par exemple dans une application de dessin, vous devez choisir différents outils de dessin (en utilisant différents boutons).GUI qt connexion

Quelle est la meilleure façon de procéder? Ma première pensée a été d'essayer de connecter le signal cliqué du PushButton à une fonction qui définit une variable current_tool. J'ai fait quelques recherches et ne pouvais pas trouver un moyen de connecter un signal QObject à une fonction régulière.

Cela me conduit à croire qu'il ya probablement une approche différente. Un où je crée un nouveau QObject (ma propre extension qui est) qui a diverses propriétés d'interface graphique. Je définirais alors mes emplacements ici pour les différents boutons.

Quelle est la meilleure façon de le faire dans l'intervalle QT. Je suis nouveau et je ne connais pas la pratique préférée.

Toute information serait utile, merci

Répondre

1

Vous pouvez définir ces « fonctions normales » que les créneaux horaires. Machines à sous sont juste normal functions qui peut également être appelé par des signaux:

class ToolSelector : public QObject { 
    Q_OBJECT 

public: 
    Tool *selected; 

public slots: 
    void selectBrush(); 
    void selectPen(); 
    void selectFill(); 
}; 

ToolSelector::selectBrush() { 
    delete selected; 
    selected = new Brush(); 
} 

ToolSelector::selectPen() { 
    // ... 
} 

// ... 

toolsel = new ToolSelector(); 
brushButton = new QPushButton(); 
connect(brushButton, SIGNAL(clicked()), toolsel, SLOT(selectBrush())); 
+0

Il est important de noter que cela ne fonctionne que pour les objets dérivés par QObject. – ypnos

0

Hériter de la classe qui génère uic, créant, par exemple, une classe MyAppWindow. Fournissez des METHOD supplémentaires dans cette classe, ainsi qu'un objet Document ou Drawing. Connectez ces méthodes aux signaux qui vous intéressent et modifiez une variable membre qui contient l'état de dessin.