同之前所寫的,ShowButton是繼承自QGraphicsWidget的自定義控件
ShowButton* button = qobject_cast<ShowButton*>(sender());
這句話的意思就是將sender()信號的發出者的QObject型指針就行強轉得到需要的類型,
這裡看模板函數
template <class T>
inline T qobject_cast(QObject *object)
{//這是模板函數的定義,實現的是,如果object是T類型或者它的自雷,就可以把object返回成T類型對象,前提是要包含Q_OBJECT宏
}
我們觀察發現sender()的發出者是QGraphicsWidget的子類,而QGraphicsWidget繼承自QGraphicsObject,QGraphicsObject又繼承自QObject,因此,這個sender()確實可以作為實參傳給object,然後函數qobject_cast會把它轉化成想要的ShowButton*類型。
本文出自 “賣萌程序員” 博客,請務必保留此出處http://7677869.blog.51cto.com/7667869/1265607