このプログラムを取り上げます (カスタム メタタイプが、呼び出されqRegisterMetaType
ていないにもかかわらず、登録されているかのように動作することに気付いた探索的テスト ケースから適合させたものです)。
#include <QMetaType>
#include <QVariant>
#include <iostream>
class C1 {
};
Q_DECLARE_METATYPE(C1)
int main() {
std::cout << QMetaType::type("C1") << std::endl;
QVariant v = QVariant::fromValue<C1>(C1());
std::cout << QMetaType::type("C1") << std::endl;
return 0;
}
これは以下を出力します:
0
256
(さらにテストを行うと、メタタイプが実際に登録されていることが示されます。construct
(表示されていない場所でも) 編集できますQ_DECLARE_METATYPE(..)
)
この動作はよく知られていますか? 頼った?(おそらくそうではありませんが、メタタイプを登録するための「公式」ルールに従って失敗したテストを取得しようとすると、最初に戸惑いました。したがって、質問です)
PS もちろん、qRegisterMetaType
内で呼び出されるのを見ることができますQ_DECLARE_METATYPE(..)
が、問題は依然として保持されます (少なくとも私はそれを望んでいます)。
前もって感謝します。