Я вижу, что QButtonGroup
s позволяет вам ввести целое число, когда вы делаете buttonGroup->addButton
, а затем вы можете получить к нему доступ через сигнал buttonClicked
. Это удобно для определения того, какая из кнопок в группе была нажата. Почему нет ничего похожего на QActionGroup
с? У QActionGroup
s есть сигнал 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());
}