Qt常常會遇到崩潰的問題,在PC機上問題較少,但是交叉編譯到Arm上之後,問題就會隔三差五的顯示出來,或許跟操作系統的成熟度有關?結合最近的心得來談談這個問題。
第一個問題就是自定義類型。在我們開發程序的時候難免要用到自定義數據類型或者對象,一般情況下我們定義出對象的屬性、方法和構造函數就可以了,但是在Qt中我們還需要析構函數以及為類型聲明QMetaType。
析構函數當然是用於銷毀對象。
為自定義類型聲明QMetaType,是因為在 Qt中負責自定義類型的類是QMetaType,否則Qt不知道該如何讀取和保存該類,也無法保存到Qvariant中。如何為類型聲明QMetaType呢?很簡單,在對象後面加入宏Q_DECLARE_METATYPE()就行了。
基本代碼如下所示:
#ifndef MACHINE_H
#define MACHINE_H
#include <QtCore>
class Machine
{
public:
Machine();
Machine(const Machine &other);
~Machine();
int get_mahine_id();
QString get_machien_name();
private:
int machine_id;
QString machine_name;
};
//將自定義類型聲明為 QMetaType
Q_DECLARE_METATYPE(Machine)
#endif // MACHINE_H