gpt4 book ai didi

c++ - QSignalMapper 是如何工作的?

转载 作者:可可西里 更新时间:2023-11-01 16:28:40 24 4
gpt4 key购买 nike

在我在这里发帖之后:Associate signal and slot to a qcheckbox create dynamically我需要关联:

• 当我点击一个 qCheckBox 到我的函数 cliqueCheckBox(QTableWidget *monTab, int ligne, QCheckBox *pCheckBox) clicked()

为此,我必须使用QSignalMapper,在尝试理解它的工作原理两个小时后,我没有得到好的结果,这是我编写的代码,这显然是错误的:

 QSignalMapper *m_sigmapper = new QSignalMapper(this);
QObject::connect(pCheckBox, SIGNAL(mapped(QTableWidget*,int, QCheckBox*)), pCheckBox, SIGNAL(clicked()));
QObject::connect(this, SIGNAL(clicked()), this, SLOT(cliqueCheckBox(QTableWidget *monTab, int ligne, QCheckBox *pCheckBox)));

m_sigmapper->setMapping(pCheckBox, (monTab,ligne, pCheckBox));
QObject::connect(m_sigmapper, SIGNAL(clicked()),this, SLOT(cliqueCheckBox(QTableWidget *monTab, int ligne, QCheckBox *pCheckBox)));

你能给我解释一下,QSignalMapper 是如何工作的吗?我真的不明白该联想什么:(

最佳答案

QSignalMapper 类收集一组无参数信号,并使用与发送信号的对象相对应的整数、字符串或小部件参数重新发射它们。所以你可以有一个这样的:

QSignalMapper * mapper = new QSignalMapper(this);
QObject::connect(mapper,SIGNAL(mapped(QWidget *)),this,SLOT(mySlot(QWidget *)));

对于每个按钮,您可以将 clicked() 信号连接到 QSignalMappermap() 插槽,并使用setMapping 以便当 clicked() 从按钮发出信号时,信号 mapped(QWidget *) 被发射:

QPushButton * but = new QPushButton(this);

QObject::connect(but, SIGNAL(clicked()),mapper,SLOT(map()));
mapper->setMapping(but, but);

这样,每当您单击一个按钮时,就会发出映射器的 mapped(QWidget *) 信号,其中包含小部件作为参数。

关于c++ - QSignalMapper 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24260394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com