是否可以在 QMetaMethod 中接收返回类型和/或参数类型的完整类型名称?
例子,
namespace N1 {
namespace N2 {
class C1: public QObject {
Q_OBJECT
};
}
}
class C2: public QObject {
Q_OBJECT
public:
typedef N1::N2::C1 C1T;
Q_INVOKABLE void foo(C1T c1);
};
QMetaMethod method;
// some logic to find method void foo(C1T) of C2
auto name = method.parameterNames(); // return "C1T"
auto name2 = C1T::staticMetaObjec.className() // return "N1::N2::C1"
是否可以找出方法参数名称的全名,而不是“C1T”,而是“N1::N2::C1”,或者至少是“C1”?命名空间的同样问题,如果 C2 在 N1 命名空间中并且我使用 N2::C1 作为参数类型,它返回“N2::C1”,我可以有“N1::N2::C2”吗?
最佳答案
moc 不理解 C++ 类型系统。对于 moc,类型是字符串,并且仅当字符串匹配时才等同于另一种类型。您必须坚持一种表示参数类型的方式,并使用它。
关于c++ - QMetaMethod 中的完整类型名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29109151/