制作QToolBar的"可检查"QToolButtons的最佳方法,其中一次只能检查其中一个按钮?

Dan*_*n O 9 c++ qt qt4 qtoolbar

我想制作一个带有一些动作的QToolBar,每个动作都是"可检查的"(也就是说,我在创建它之后对每个动作调用setCheckable(true),这使得按钮在点击后处于关闭状态).

我可以想到"取消选中"其他按钮的唯一方法是挂钩每个按钮的触发信号,并在选中给定按钮时取消选中其他按钮.

有没有更好的办法?

mmo*_*nem 15

创建一个QActionGroup并让它成为您操作的父级.这QActionGroup将维持其子女的状态.

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
Run Code Online (Sandbox Code Playgroud)

  • 这应该有效,对于n个独占按钮的一般情况,也有QButtonGroup. (4认同)