Qt QObject在自定义类中找不到信号

Qt QObject在自定义类中找不到信号,qt,Qt,当我将鼠标悬停在MyGraphicsRecItem(它是QGraphicsRecItem和QObject的子类)上时,我试图使其颜色略有不同,因此我在头文件中创建了一个信号: class MyGraphicsRectItem : public QObject, public QGraphicsRectItem { Q_OBJECT ... signals: void hoverEnterEvent(QGraphicsSceneHoverEvent *event); }

当我将鼠标悬停在MyGraphicsRecItem(它是QGraphicsRecItem和QObject的子类)上时,我试图使其颜色略有不同,因此我在头文件中创建了一个信号:

class MyGraphicsRectItem : public QObject, public QGraphicsRectItem
{
    Q_OBJECT
    ...
signals:
     void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
}
在MyMain窗口中,我以这种方式连接HoverEnter事件(编辑,澄清:a1是MyGraphicsRectItem):


不幸的是,我在MyGraphicsRectItem中未找到
QObject::connect:signal
错误消息,尽管我在头文件中明确定义了它。有什么想法吗?

你的第三个论点似乎不正确

<下面的例子中有一个C++ LAMBDAS的例子。(搜索C++11 lambdas)

基于此,你的第三个论点应该如下所示。试试这个

[=] (QGraphicsSceneHoverEvent *event,int i) { this->hoverRect(event, i);}
总之,connect语句看起来有些什么,如下所示

connect(a1, &MyGraphicsRectItem::hoverEnterEvent, [=] (QGraphicsSceneHoverEvent *event,int i) {
            this->hoverRect(event, i);
});

与公认答案中相同的方法也应该对您有所帮助:嗨,我不认为hoverEnterEvent过载,所以我不太确定它是否适用。我确实尝试过实现该解决方案,但它对我没有任何帮助。在编译时或运行时,您在何处/何时看到错误消息?另外,所示代码中的
a1
类型是什么?它在运行时显示。a1属于我个人定义的MyGraphicsRectItem类型。如果它是运行时,那么唯一的猜测是实例a1在某种程度上不是预期的。需要更完整的代码。您好,很抱歉响应太晚,但问题是hoverEnterEvent不接受第二个整数参数,因此我使用您的解决方案得到了一个不兼容的插槽和信号错误,我尝试将您的语句编辑为[=,&I],以某种方式将I作为变量传入,但它仍然找不到信号。如果你还有其他建议,请告诉我。使用QSignalmapper,如下例所示。然后从发布的示例中的connect语句中删除“I”。
connect(a1, &MyGraphicsRectItem::hoverEnterEvent, [=] (QGraphicsSceneHoverEvent *event,int i) {
            this->hoverRect(event, i);
});