在插槽中使用QMap

时间:2013-01-23 23:16:15

标签: c++ qt4 qmap

我想使用我之前创建的QMap在插槽中使用。我试过跟this但它仍然没有用(我想我只是在做一些愚蠢的事情)。这是我正在使用的代码。

构造

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

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

1 个答案:

答案 0 :(得分:1)

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

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

您可以让tile对象成为实现someSlot()的类的成员变量,或者您必须将tile传递给连接到someSlot的信号(const QMap&gt;&amp;)

我的建议是将tile设为成员变量,而不是堆栈变量