当创建动态菜单时,我经常需要相关信号来响应特定索引值(例如,与该菜单项相关联的数据库行标识符)。要做到这一点,我似乎需要使用下面的代码,这感觉就像一个黑客。
QActionGroup *oneOffgroup = new QActionGroup(menu);
QAction *action = new QAction(tr("New text form..."),menu);
action->setData( writingSystem.id() );
oneOffgroup->addAction(action);
connect( oneOffgroup, SIGNAL(triggered(QAction*)), this, SLOT(newTextForm(QAction*)) );
submenu->addAction(action);
This answer建议使用QMenu :: triggered(QAction *)信号。这只是意味着我必须整理发送到该菜单的每个信号。 (在某些情况下,这可能没问题,但不是我目前正在进行的工作。)