#include #include using namespace std; class A{public: int i;}; class B{public:int i;}; class D{public:D(int){}};//该类无 public 默认构造函数 class E{}; //class F{private: ~F(){};}; 写露了 //声明类型 Q_DECLARE_METATYPE(A) Q_DECLARE_METATYPE(B) //Q_DECLARE_METATYPE(D) //错误,类 D 没有公有的默认构造函数 int main(int argc, char *argv[]){ //注册类型 qRegisterMetaType(); //qRegisterMetaType(); //错误,类型 E 未使用宏 Q_DECLARE_METATYPE(T)声明 A ma; ma.i=1; B mb; mb.i=2; //QVariant v1(ma); //错误,没有相应的构造函数。 QVariant v; v.setValue(ma); //将对象 ma 存储在 v 之中 cout<().i<(); //把存储在 v 之中的对象 ma 赋值给 ma1 cout<(); //错误,类型不相同。 mb1=v.value(); //正确,由类型 A 转换到类型 B 失败,此时 value 会返回一个默认构造的值。 cout<