关于用文件读写QGraphicsItem内容的问题。
void MainWindow::save()
{
QList<QGraphicsItem *> it = scene->items();
file = new QFile;
if(!file->open(QIODevice::WriteOnly|QIODevice::Truncate)) ;
return;
QDataStream out(file);
for(int i =0;i<it.size();i++)
{
out<<it;
}
}
void MainWindow::setall(QModelIndex x)
{
if(x.row()==0)
{
QList<QGraphicsItem *> it;
if(!file->open(QIODevice::ReadOnly))
return;
QDataStream in(file);
in>>it;
for(int i=0;i<it.size();i++)
{
scene->addItem(it.value(i));
}
}
curIndex = &x;
}
结果报错,可以确定于MainWindow的其他地方无关,就是文件读写出错。希望大神指点。
[解决办法]
void MainWindow::save()
{
QList<QGraphicsItem *> it = scene->items();
file = new QFile; // file在哪里声明的?
if(!file->open(QIODevice::WriteOnly|QIODevice::Truncate)) ;
return;
QDataStream out(file);
for(int i =0;i<it.size();i++)
{
out<<it;//QDataStream不能读写QGraphicsItem,你自己为QGraphicsItem写了<<函数
}
}
void MainWindow::setall(QModelIndex x)
{
if(x.row()==0)
{
QList<QGraphicsItem *> it;
if(!file->open(QIODevice::ReadOnly)) // file在哪里声明的?用->说明file是个指针,在哪里new的?
return;
QDataStream in(file);
in>>it;QDataStream不能读写QGraphicsItem,你自己为QGraphicsItem写了>>函数
for(int i=0;i<it.size();i++)
{
scene->addItem(it.value(i));
}
}
curIndex = &x;
}
目前就发现这些问题。