最近主要在擼官方的自學包。在此作下簡短的筆記:
Qt對象模型
Qt包含的1500個類可以分爲2類
1. identify types;
2. value types;
identify types:
1. 從QObject繼承下來的類;
2. 通過元對象系統擴展C++的動態性質;
3. 不能用拷貝構造函數,並且"="符號相當與delete;
如:QWidget,QWindow,QApplication,QEventLoop,QThread,QFile,QTcpSocket
value types是標誌的C++類:
1. 如QColor,QEventLoop,QDataStream,QMetaType;
2. 100個value types使用copy-on-write模式(隱式共享);
如:QString,QByteArray,QList,QVector,QHash,QCache,QDir,QPixmap,QImage,Qrush,QPen
這裏介紹下deleteLater()函數
當某個對象在處理一個事件時,這個對象不能被刪除;
QObject::deleteLater()槽函數調度刪除object對象;
>當Object回到事件循環中,對象將會被刪除;
>線程中如果沒有事件循環,那麼當線程完成後就會被刪除:
connect(threadPtr, &QThread::finished, threadPtr, &QThread::deleteLater);
注意:同一個對象調用多次deleteLater()不會照成多重刪除。