for(int i=0;i<2;i++) { for(int j=0;j<2,j++) {
snapshot_action[k]=new QAction(this);
snapshot_action[k]->setIconText("Snapshot");
control_menu[k]->addAction(snapshot_action[k]);
connect(snapshot_action[k], &QAction::triggered, this, &SimplePlayer::snap_fun);}}
最初k=0;
我省略了代码,它们使用快照操作列出了四个视图。 (为简单起见)。
现在的问题是,当我按下任何视图的快照操作按钮时,我应该知道按下该特定窗口的快照操作按钮。
我该怎么办?
我如何将值传递给我的snap函数?
我是否需要存储&#39; k&#39;在一些阵列? (一些坏主意)
答案 0 :(得分:1)
您可以使用QSignalMapper
:
QSignalMapper m_mapWidget;
在代码中:
connect(&m_mapWidget, SIGNAL(mapped(int)), this, SLOT(snap_fun_k(int)));
循环k:
connect(action, SIGNAL(triggered()), &m_mapWidget, SLOT(map()));
m_mapWidget.setMapping(action, k);
请注意,您希望信号映射器的生命周期至少与您希望它执行映射一样长。