0

私の質問は次のとおりです。

タイプ QVariant::UserType の QVariant が期待されるタイプであることを確認する方法は?

具体的には、

struct MyType {
  ....
};

Q_DECLARE_METATYPE(MyType);

QVariant v(QVariant::fromValue(MyType());

v.userType()コンパイル時に何が返されるかを調べる方法はありますか?

4

2 に答える 2

3

実行時まで決定されないため、コンパイル時にこれを見つける方法はありません。で取得できますqMetaTypeId<MyType>()

于 2012-07-26T08:46:26.437 に答える
1

私が試したことからuserType()、あなたが宣言したインデックスは256から始まり、1ずつ増加します。

したがって、を使用するQ_DECLARE_METATYPE(someType);と、このタイプは呼び出しで返さ256userType()ます。あなたがそうするならQ_DECLARE_METATYPE(someOtherType);、それは戻ってくるでしょう257

また、実行時にチェックする必要がある場合は、一度値を取得してから比較に使用できます。

int MyTypeID = QVariant::fromValue(MyType()).userType(); 
if( someObject.userType == MyTypeID )
{
//do stuff
}

qRegisterMetaType()関数も参照してください。

于 2012-07-25T13:53:36.470 に答える