天天看點

QT中重寫QGraphicsItem類,編譯出現錯誤

最近重寫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)
           
Qt

繼續閱讀