0

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

构造函数:

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

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

4

1 回答 1

1

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

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

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

我的建议是让tiles成为成员变量,而不是堆栈变量

于 2013-01-23T23:46:16.907 回答