我看到QButtonGroup
允许你在执行buttonGroup->addButton
时输入一个整数,然后你可以通过buttonClicked
信号访问它。这对于识别组中的哪个按钮被点击非常方便。为什么QActionGroup
没有类似的东西? QActionGroup
有一个selected
信号,它会将QAction
传回给您,您可以使用Id
来确定点击了哪个操作,但我仍然想要一个关联的enum
我可以使用我的QAction
。在toolsActGroup = new QActionGroup(this);
toolsActGroup->setExclusive(true);
selectToolAct = new QAction(QIcon(":/icons/custom/select.png"), tr("&Select"), toolsActGroup);
selectToolAct->setIconVisibleInMenu(false);
selectToolAct->setShortcut(Qt::Key_S);
selectToolAct->setCheckable(true);
selectToolAct->setStatusTip(tr("Select objects to modify or delete"));
selectToolAct->setProperty("tool", EditorScene::Select);
selectToolAct->setChecked(true);
// more actions here...
connect(toolsActGroup, SIGNAL(selected(QAction*)), this, SLOT(toolSelected(QAction*))); // use one signal for the whole (exclusive) action group
void EditorWindow::toolSelected(QAction* act) {
// pass the value to the widget that needs it
m_scene->setTool((EditorScene::Tool)act->property("tool").toInt());
}
内是否存在我可以存储这样一个整数的任何地方,而不是它是一个黑客?
{{1}}
答案 0 :(得分:4)
QAction
是QObject
,这意味着您可以使用QObject::setProperty
和QObject::property
在其上设置并获取任意键值对。