Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Best way to make a QToolBar of "checkable" QToolButtons where only one of the buttons can be checked at a time?

Tags:

c++

qt

qt4

qtoolbar

I'm looking to make a QToolBar with a few actions in it, each of which is "checkable" (that is, I call setCheckable(true) on each action after creating it, which leaves the button in the down state after clicking it).

The only way I can think of "unchecking" the other buttons is to hook into each button's triggered signal and uncheck the other buttons when a given button is checked.

Is there a better way?

like image 889
Dan O Avatar asked Jul 01 '10 01:07

Dan O


1 Answers

Create a QActionGroup and let it be the parent of your actions. This QActionGroup will maintain the states of its children.

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
like image 107
mmonem Avatar answered Nov 20 '22 11:11

mmonem