是否可以确定模板参数的QMetaType :: Type值。
我试过了:
template <class T>
class MyClass {
public:
int getType() {
return QMetaType::type(typeid(T).name());
}
};
但是这总是返回0(QMetaType :: UnknownType),因为Qt使用与编译器不同的类型名称。
它的工作方式如下:
MyClass<int>().getType(); // 2 (QMetaType::Int)
MyClass<QString>().getType(); // 10 (QMetaType::QString)
MyClass<QRect>().getType(); // 19 (QMetaType::QRect)
MyClass<MyType>().getType(); // 1024 (Set by qRegisterMetaType)
答案 0 :(得分:0)
我在Qt 5.12.4上测试了您的代码,它似乎可以工作。 您还可以Q_DECLARE_METATYPE注册您的自定义类型,然后使用qMetaTypeId()获取metaType ID。
这是我的测试代码和示例:
2
10
19
1024
2
10
19
1024
此输出:
l = """name day color
John 1 White
John 2 White
John 3 Blue
John 4 Blue
John 5 White
Tom 2 White
Tom 3 Blue
Tom 4 Blue
Tom 5 Black
Jerry 1 Black
Jerry 2 Black
Jerry 4 Black
Jerry 5 White""".split('\n')