Qt 我在哪里可以存储QAction(Group)ID?
我看到Qt 我在哪里可以存储QAction(Group)ID?,qt,Qt,我看到QButtonGroups允许您在执行buttonGroup->addButton操作时输入一个整数,然后您可以通过buttonClicked信号访问它。这便于识别组中的哪些按钮被单击。为什么QActionGroups没有类似的功能QActionGroups有一个选中的信号,该信号将传回QAction,您可以使用它来标识单击了哪个操作,但我仍然需要一个关联的Id,以便我可以使用我的enum。在QAction的任何地方,我都可以存储这样一个整数,而不是黑客攻击 用法示例: QAction是
QButtonGroup
s允许您在执行buttonGroup->addButton
操作时输入一个整数,然后您可以通过buttonClicked
信号访问它。这便于识别组中的哪些按钮被单击。为什么QActionGroup
s没有类似的功能QActionGroup
s有一个选中的信号,该信号将传回QAction
,您可以使用它来标识单击了哪个操作,但我仍然需要一个关联的Id
,以便我可以使用我的enum
。在QAction
的任何地方,我都可以存储这样一个整数,而不是黑客攻击
用法示例:
QAction
是一个QObject
,这意味着您可以使用QObject::setProperty
和QObject::property
在其上设置和获取任意键值对,这意味着您可以使用QObject::setProperty
和QObject::property
在其上设置和获取任意键值对,我认为这是一个合理的解决方案。谢谢:)关于Qt还有很多需要了解的地方。我想这是一个合理的解决方案。谢谢:)关于Qt还有很多需要学习的地方。
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());
}