2010-07-01 9 views
6

Ich möchte eine QToolBar mit ein paar Aktionen erstellen, von denen jede "checkbar" ist (dh, ich rufe setCheckable (true) bei jeder Aktion auf, nachdem sie erstellt wurde, was die Schaltfläche im heruntergefahrenen Zustand zurücklässt) klick es an).Der beste Weg, um eine QToolBar von "Checkable" QToolButtons zu machen, wo immer nur eine der Schaltflächen überprüft werden kann?

Die einzige Möglichkeit, die anderen Tasten zu deaktivieren, besteht darin, das ausgelöste Signal jeder Taste zu aktivieren und die anderen Tasten zu deaktivieren, wenn eine bestimmte Schaltfläche aktiviert ist.

Gibt es einen besseren Weg?

Antwort

11

Erstellen Sie eine QActionGroup und lassen Sie es die Eltern Ihrer Aktionen sein. Diese QActionGroup wird die Zustände seiner Kinder beibehalten.

QActionGroup *anActionGroup = new QActionGroup(yourParentWidget); 
QAction* action1 = new QAction("Action 1", anActionGroup); 
QAction* action2 = new QAction("Action 2", anActionGroup); 
QAction* actionN = new QAction("Action N", anActionGroup); 
action1->setCheckable(true); 
action2->setCheckable(true); 
actionN->setCheckable(true); 

// Add these action to the tool bar 
+4

Das sollte funktionieren, für den allgemeinen Fall von n exklusiven Schaltflächen gibt es auch QButtonGroup. –