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函数?
我需要在一些数组中存储k的值吗?
您可以使用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);
请注意,您将希望信号映射器的生命周期至少与您希望它执行映射的时间一样长。