最近重寫QGraphicsItem類時,編譯時出現如下警告:
warning : Class PolygonItem implements the interface QGraphicsItem but does not list it in Q_INTERFACES. qobject_cast to QGraphicsItem will not work!
解決方法:
1. 保證繼承的類的順序為:public QObject , public QGraphicsItem;
在該類進行定義時,要添加 Q_OBJECT宏。
舉個栗子:
class PolygonItem : public QObject, public QGraphicsItem
可能解決了第一步,發現警告依然存在,那需要用下面的第2步。
2. 在類的聲明中,Q_OBJECT宏的下面,添加:Q_INTERFACES(QGraphicsItem),即可解決問題
舉個栗子:
class PolygonItem : public QObject, public QGraphicsItem
{
Q_OBJECT
Q_INTERFACES(QGraphicsItem)