QWidget,顧名思義,就是窗體部件的基類,比如QDialog、QLabel等都直接或間接繼承自它。它提供了壹些窗體部件專有的信號與槽。QtWidget自然也繼承自QObject。
壹般上,在使用Qt
Creator創建壹個類時,Qt會詢問妳該類的基類是什麽、類型信息是什麽等。如果妳的類是繼承自形如QPushButton、QDialog、
QMainWindow、QLabel的,那麽,使用explicit MyLabel(QWidget *parent =
0);。如果妳的類繼承自QString等類,那麽使用explicit MyString(QObject*parent = 0);。
這裏的QObject *parent也好,QWidget *parent也好,都是為了給對象指定從屬關系。比如,
explicit MyLabel(QWidget *parent = 0);
這樣:
QDialog dialog;
MyLabel *label = new MyLabel(&dialog);
就指定了label是作為dialog的壹個child存在的。當dialog被銷毀時,它的所有children都會被自動銷毀。所以在Qt中,只要我們在動態創建對象時顯式或隱式(比如通過Layout、setCentralWidget等)指定了對象的從屬關系,那麽這個對象就會在其父對象銷毀的時刻被Qt自動銷毀,而無需妳自己再調用delete了。