gpt4 book ai didi

c++ - QMetaType 是否与模板化类型一起使用

转载 作者:行者123 更新时间:2023-11-30 02:03:33 25 4
gpt4 key购买 nike

我已经 typedef ProxyTray<QImage, ImageCaptureService> TrayType;在我的类(class)中( QObject 但ProxyTray 不是 QObject)。我在 Signal, Slots 中使用该类型作为参数类型。

qRegisterMetaType接受这样的类型?我将如何为参数化类型的字符串类型名称建模?

最佳答案

你可以声明模板元类型:

Q_DECLARE_METATYPE_TEMPLATE_1ARG(TemplatedClass)
Q_DECLARE_METATYPE_TEMPLATE_2ARG(TemplatedClass)

例如

template<class T>
class Foo {

};
Q_DECLARE_METATYPE_TEMPLATE_1ARG(Foo)

允许传递Foo<int> , Foo<QString>等...信号和插槽。

template<class T, class U>
class Foo {

};
Q_DECLARE_METATYPE_TEMPLATE_2ARG(Foo)

允许传递Foo<int, double> , Foo<bool, bool>等等……

但是有两个注意事项:

  • 这不是官方 Qt API 的一部分,可能会在某个时候消失。
  • 模板类型必须使用 Q_DECLARE_METATYPE 自行注册: Foo<Bar>需要 Bar也被注册为元类型(如Qt 5.6)

关于c++ - QMetaType 是否与模板化类型一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11725730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com