c++ - QMetaMethod 中的完整类型名称

标签 c++ qt

是否可以在 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/

相关文章:

java - Qt Framework 中是否有与 Swing CardLayout 等效的东西?

c++ - 从不同的 QWidget 中隐藏 QWidget

c++ - 死键问题(急性、分音符等)c++

c++ - 如何在新线程(QThread)中使用一个进程(QProcess)?

c++ - `enable_if` 与 `enum` 模板特化问题

c++ - 二维世界速度到二维局部速度

python - 在spynner模块中使用nativeClickAt()方法出现段错误

qt - Opencv使用QString文件名的imread和vector加载图像

c++ - Visual C++ 2008 错误?

c++ - 是否可以调用一个以 const 右值作为参数的函数?