如何将值传递给qt中的SLOT函数?

时间:2016-09-28 06:32:20

标签: qt qt5

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;在一些阵列? (一些坏主意)

1 个答案:

答案 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);

请注意,您希望信号映射器的生命周期至少与您希望它执行映射一样长。