私の質問は次のとおりです。
タイプ QVariant::UserType の QVariant が期待されるタイプであることを確認する方法は?
具体的には、
struct MyType {
....
};
Q_DECLARE_METATYPE(MyType);
QVariant v(QVariant::fromValue(MyType());
v.userType()
コンパイル時に何が返されるかを調べる方法はありますか?
私の質問は次のとおりです。
タイプ QVariant::UserType の QVariant が期待されるタイプであることを確認する方法は?
具体的には、
struct MyType {
....
};
Q_DECLARE_METATYPE(MyType);
QVariant v(QVariant::fromValue(MyType());
v.userType()
コンパイル時に何が返されるかを調べる方法はありますか?
実行時まで決定されないため、コンパイル時にこれを見つける方法はありません。で取得できますqMetaTypeId<MyType>()
。
私が試したことからuserType()
、あなたが宣言したインデックスは256から始まり、1ずつ増加します。
したがって、を使用するQ_DECLARE_METATYPE(someType);
と、このタイプは呼び出しで返さ256
れuserType()
ます。あなたがそうするならQ_DECLARE_METATYPE(someOtherType);
、それは戻ってくるでしょう257
。
また、実行時にチェックする必要がある場合は、一度値を取得してから比較に使用できます。
int MyTypeID = QVariant::fromValue(MyType()).userType();
if( someObject.userType == MyTypeID )
{
//do stuff
}
qRegisterMetaType()関数も参照してください。