在插槽中使用 QMap

Use a QMap in a slot

本文关键字:QMap 插槽      更新时间:2023-10-16

我想使用我之前创建的QMap在插槽中使用。我试过遵循这个,但它仍然不起作用(我想我只是在做一些愚蠢的事情)。这是我正在使用的代码。

构造 函数:

QMap <int, QList<int> > tiles;
connect(ui->lineEdit, SIGNAL(editingFinished()), this, SLOT(someSlot()));

现在,每当我发送信号编辑完成时,我都希望某个插槽检查该值是否在 QMap 中,如果是,则继续处理各种条件。问题是,如何将我的 QMap 传递到插槽?Qt似乎不允许带有参数的插槽。

插槽只是Qt调用的一个函数。它的称呼方式有魔力,但它只是一个函数。参数被传递到信号中(就像常规函数一样),Qt最终将该参数(或者更可能是该参数的副本)传递给接收槽。Qt中有逻辑,在定义连接时,您不必像向信号传递那么多参数,但这不是本讨论的。

不能在这样的连接中按名称传递参数。

你可以让你的tiles对象成为实现someSlot()的类的成员变量,或者你必须将tiles传递给连接到someSlot(const QMap>&)的信号。

我的建议是使磁贴成为成员变量,而不是堆栈变量