Qt 提供的数据容器都是模板类,构造时要带数据类型,支持基本数据类型(如int和double等)和 Qt 的一些数据类型(如QString和QTime等)。但Qt 的 QObject 及其他的子类(如QWidget和QDialog等)是不能直接存储在容器中的,编译时会报错。
如果想使用自己的自定义数据类型,解决方法有两个:
一、在 Qt 容器中储存我们自定义类型的指针
如 QList <MyClass *> list;
二、因为存储在 Qt 容器中的数据必须是可赋值的数据类型,也就是说,自定义数据类型必须提供一个默认构造函数、一个复制构造函数和一个赋值操作运算符重载函数。
①定义默认构造函数
声明:
MyClass();
实现:
MyClass::MyClass()
{
......
}
②定义复制构造函数
声明:
MyClass(const MyClass &myclass);
实现:
MyClass::MyClass (const MyClass &myclass): QObject()
{
this->xxx = myclass.xxx;
......
}
③定义赋值运算符重载函数
声明:
MyClass & operator=(const MyClass &myclass);
实现:
MyClass &MyClass::operator=(const MyClass &myclass)
{
this->xxx = myclass.xxx;
......
return *this;
}