通过qdir获取文件夹下文件列表,把文件地址保存到Card的对象里的QString类型的dir里,经测试在setdir里加输出语句能够正常输出,但是程序运行用getdir获取dir里的字符串时错误,内容为空。。。求助啊~~~这是为啥?
#include<QSettings>
#include<iostream>
#include <QDir>
#include<QString>
using namespace std;
class Card
{
public:
Card()
{
x=300;
y=300;
dir="\0";
player=0;
}
void SetX(int x_i)
{
x=x_i;
}
void SetY(int y_i)
{
y=y_i;
}
void SetPlayer(int player_i)
{
player=player_i;
}
void SetDir(QString m)
{
dir+=new QString (m);
//dir=( m.unicode(), m.length() );
//dir=m;
//cout<<qPrintable(dir);
}
int GetX()
{
return x;
}
int GetY()
{
return y;
}
QString GetDir()
{
cout<<qPrintable(dir);
cout<<dir.length()<<endl;
cout<<"test"<<endl;
return dir;
}
int GetPlayer()
{
return player;
}
private:
int x;
int y;
QString dir;
int player;
};
class CardLoader
{
public:
CardLoader(int num)
{
num_i=num;
CreateIdentityCard();
}
~CardLoader()
{
delete []iCard;
}
Card *iCard;
void CreateIdentityCard()
{
iCard=new Card[num_i];
QString path="D:/pic/Identity/";
QDir dir(path);
dir.setFilter(QDir::Dirs|QDir::Files);
dir.setSorting(QDir::DirsFirst);
QFileInfoList list = dir.entryInfoList();
for(int i=0;i<num_i;i++)
{
QFileInfo fileInfo = list.at(i);
if(fileInfo.fileName()=="."||fileInfo.fileName()=="..")
{
i++;
continue;
}
QString temp;
temp.append(fileInfo.path());
temp.append("/");
temp.append(fileInfo.fileName());
//cout<<qPrintable(QString("%1").arg(temp))<<endl;
iCard.SetDir(temp);
}
}
Card* GetIdentityCard()
{
return iCard;
}
private:
int num_i;
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
CardLoader CL(5);
Card *p=CL.GetIdentityCard();
cout<<p->GetX()<<endl;
cout<<p->GetY()<<endl;
cout<<p->GetPlayer()<<endl;
//cout<<(p+1)->GetX()<<endl;
cout<<qPrintable(QString("%1").arg((p+1)->GetDir()))<<endl;
return a.exec();
}