QObject在自定义类中找不到Signal

时间:2017-06-19 18:26:23

标签: qt

当我将鼠标悬停在它上面时,我试图让我的MyGraphicsRectItem(它是QGraphicsRectItem和QObject的子类)变成略有不同的颜色,所以我在头文件中创建了一个信号:

class MyGraphicsRectItem : public QObject, public QGraphicsRectItem
{
    Q_OBJECT
    ...
signals:
     void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
}

在我的MyMainWindow中,我以这种方式连接hoverEnterEvent(编辑,澄清:a1是MyGraphicsRectItem):

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

不幸的是,即使我在头文件中明确定义了错误消息,也会收到QObject::connect: signal not found in MyGraphicsRectItem错误消息。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

以下示例中有一个C ++ lambdas示例。 (搜索C ++ 11 lambdas)

http://doc.qt.io/qt-5/signalsandslots.html

基于此,您的第三个参数应如下所示。试试这个

[=] (QGraphicsSceneHoverEvent *event,int i) { this->hoverRect(event, i);}

在所有连接语句中都会看到如下所示的内容。

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