2010-07-01 6 views
6

Estoy buscando hacer una QToolBar con algunas acciones, cada una de las cuales es "seleccionable" (es decir, llamo setCheckable (true) a cada acción después de crearla, lo que deja el botón en estado inactivo después de haciendo clic en él).¿La mejor manera de hacer una QToolBar de QToolButtons "comprobables" donde solo se puede verificar uno de los botones a la vez?

La única forma en que puedo pensar en "desmarcar" los otros botones es conectar la señal disparada de cada botón y desmarcar los otros botones cuando se marca un botón determinado.

¿Hay una manera mejor?

Respuesta

11

Crea un QActionGroup y haz que sea el padre de tus acciones. Este QActionGroup mantendrá los estados de sus hijos.

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

Eso debería funcionar, para el caso general de n botones exclusivos, también hay QButtonGroup. –

Cuestiones relacionadas