3
我用下面的代碼,每當我需要註冊使用Qt元對象系統類型:在QApplication創建之前使用Qt metatype系統可以嗎?
的* .h文件
class MyClass
{
//.....
class MyType {.....};
static const int metaType_MyType;
class MetaClerk
{
public:
MetaClerk(void);
};
static const MetaClerk metaClerk;
//.....
};
Q_DECLARE_METATYPE(MyClass::MyType)
QDataStream &operator<<(QDataStream &stream, const MyClass::MyType &a);
QDataStream &operator>>(QDataStream &stream, MyClass::MyType &a);
* .cpp文件
//.....
const int MyClass::metaType_MyType = qRegisterMetaType<MyClass::MyType>("MyClass::MyType");
MyClass::MetaClerk::MetaClerk()
{
qRegisterMetaTypeStreamOperators<MyClass::MyType>("MyClass::MyType");
}
const MyClass::MetaClerk MyClass::metaClerk;
//.....
這樣,我的MyType註冊在main()函數甚至啓動之前以所有可能的方式。所以,問題是
1)整個Qt MetaObject系統是否需要QCoreApplication的一個實例?也許我的代碼通過巧合巧妙地工作?
2)有什麼好的解決方案不涉及我醜陋的柺杖(即職員類)?