【发布时间】:2017-11-22 01:54:13
【问题描述】:
当我将鼠标悬停在 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 错误消息,即使我在头文件中明确定义了它。有什么想法吗?
【问题讨论】:
-
与接受的答案相同的方法也应该对您有所帮助:stackoverflow.com/questions/16794695/…
-
嗨,我不认为 hoverEnterEvent 超载,所以我不太确定它是否适用。我确实尝试实施该解决方案,但它对我没有任何作用。
-
您在何处/何时看到错误消息——在编译时还是在运行时?另外,代码中
a1的类型是什么? -
在运行时显示。 a1 是我个人定义的 MyGraphicsRectItem 类型。
-
如果它是运行时的,那么唯一的猜测是实例 a1 不是预期的。然后需要更完整的代码。
标签: qt