【问题标题】:how would I pass value to SLOT function in qt? [duplicate]如何将值传递给 qt 中的 SLOT 函数? [复制]
【发布时间】:2016-09-28 06:32:19
【问题描述】:
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”的值存储在某个数组中吗? (一些坏主意)

【问题讨论】:

标签: qt qt5


【解决方案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);

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    • 2015-06-23
    • 2020-06-26
    • 2020-02-21
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    相关资源
    最近更新 更多