我可以在哪里存储 QAction(组)ID?

mpe*_*pen 1 qt

我看到它QButtonGroup让你在这样做时输入一个整数,buttonGroup->addButton然后你可以通过信号访问它buttonClicked。这可以方便地识别单击了组中的哪些按钮。为什么 s 没有类似的东西QActionGroupQActionGroups 有一个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());
}
Run Code Online (Sandbox Code Playgroud)

roh*_*npm 5

AQAction是 a ,这意味着您可以使用和 来QObject设置和获取其上的任意键值对。QObject::setPropertyQObject::property