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

时间:2009-08-30 04:25:20

标签: qt

我看到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}}

1 个答案:

答案 0 :(得分:4)

QActionQObject,这意味着您可以使用QObject::setPropertyQObject::property在其上设置并获取任意键值对。

相关问题