QList应该是很好用的。这是理论。实际上也好用 。
我要把类放到QList能做到吗?
class XClient
{
public:
XClient();
XClient (const XClient &xc);
// bool operator<(const XClient& c1, const XClient &c2) const;
int operator==(const XClient & c2 )const;//比较数组的相等性
// int operator!=(const XClient &)const;//比较数组的不等性
// int &operator[](int);//下标运算符
int id;
public: //站点基本信息;
XCommStyle CommStyle ;//主通讯方式
XCommStyle BakCommStyle ;//备份通讯方式
XClientStyle ClientStyle ;//自动站采集器的类型
bool bManual ;//是否有人职守站
QString Name ;//站点名称
QString ID ;//区站号
double fX ;//台站站点的 经度
double fY ;//台站站点的 纬度
int nX ;//站点显示的 屏幕横坐标
int nY ;//站点显示的 屏幕纵坐标
};
这样一个类 ;
在头文件里面定义 ;
class XClientGroups
{
public:
XClientGroups();
static QList<XClient> *pList;
};
//cpp文件前面必须要加这个要不然编译过不去;
QList<XClient>* XClientGroups::pList ;
XClient * XClientGroups::ppList ;
XClientGroups::XClientGroups()
{
ppList=NULL;
}
通过参数把大量的类信息读出来。加到链表
pList里面去,结果在别的地方利用这个类可以。反正是static类型的。要用的时候先包含头文件 ,在直接打类名称两个冒号就能用这个pList了 ;
说实在的要把类加到列表里面。在程序任何地方访问这些列表是非常常用的一个问题。
要用的时候很简单了
int XClientGroups::mGetGroupsNames(QStringList & mlist)
{
mlist.clear();
if(pList==NULL || pList->count()<=0)
{
return 0;
}
QString strGroupName = "";
int i=0; qDebug()<<pList->count();
for( i=0;i<pList->count();i++);
{
qDebug()<<"pList->count()";
XClient xc = pList->at(i);//注意这里是全局的静态的指针;在任何地方用这个指针不出错。就这么搞定;
qDebug()<<xc.ID;
strGroupName = xc.strGroupName;
qDebug()<<strGroupName;
if(!mlist.contains(strGroupName))
{
mlist.append(strGroupName);
}
}
return mlist.size();
}