在 QT 中声明模板类为元类型
Declaring a template class a metatype in QT
我一直在尝试允许我自己的向量库成为 QT 中的元类型,通过他们教我的教程Q_DECLARE_METATYPE(class)
。 但是我的类是一个模板。 我一直在搜索并发现了一个未记录的宏Q_DECLARE_METATYPE_TEMPLATE_1ARG()
,但是我发现了一个错误报告,并且没有关于它是否已修复的反馈。 我试过使用它,但它仍然没有注册。 原因是在我的游戏引擎Shader
类中,我存储制服并根据制服将值存储为QVariant
。这就是我遇到问题的地方。有谁知道如何为QMetatypes
注册模板?
Qt使用你在内部提到的宏,还有一个2参数版本。 QtCore/qmetatype.h
显示了一些使用示例。 我不确定为什么它不能按预期为您工作,我需要查看您的代码以了解更多信息。
但是,有一种解决方法可以接受: 如果您知道将需要的所有可能的模板参数,则可以显式声明每个模板实例化为元类型。 例如,如果你的模板类被称为Foo<T>
,并且你知道你只会使用Foo<int>
和Foo<float>
, 您只需注册这些:
Q_DECLARE_METATYPE(Foo<int>)
Q_DECLARE_METATYPE(Foo<float>)
相关文章:
- 使用QJsEngine在Qt中注册自定义类型
- 在Qt中注册自定义元类型的别名类型
- Qt/SQL - 从 QSqlQuery exec Stored Procedure 获取列类型和名称?
- QT如何检查表格小部件类型
- Qt 无法对类型"uint8_t"的参数进行排队,即使使用 qRegisterMetaType 也是如此
- Qt:无法对类型为"QProcess::P rocessError"的参数进行排队 - QProcess::P rocessError(FailedToStart)
- QT QT QBYTEARRAY无符号数据类型
- Qt 模型拖放 - 无法保存类型 QJsonValue
- 编译错误 QT - 无法从类型强制转换
- QT:错误 ["*"令牌之前的预期")",并且主窗口未命名类型]
- Qt QGraphicsSceneMouseEvent 访问不完整类型
- Qt - 在没有正则表达式的情况下,将 QString 拆分为几种类型的空格
- typedef 中的自定义类型为 Qt MetaType
- Qt C++ - 创建 QList<Myclass> - 不是参数 'T 的有效模板类型参数
- QT类型作为函数参数
- QT创建者C MSVC15:缺少类型的规范
- 确定QT中父型的类型
- 错误:'abc'没有名称类型 QT c++ GUI 应用程序
- 无效使用不完整的类型Qt
- HTTP POST中缺少的内容类型.QT使用Webview