书上是这样描述QDataStream的:QDataStream提供了一种与运行平台无关的存储格式,他不仅支持QList<T>和QMap<K,T>等QT容器类,还支持整型和双精度型等基本的c++类,以及其他许多种qt数据类型,诸如QByteArray、QFont、QImage、QPixmap、QString和QVariant.
然而我在QListWidgetItem、QTreeWidgetItem等中都找到了void QListWidgetItem::read ( QDataStream & in ) ,那么可以认为它直接能够保存item,这样就可以在一些额界面中省下很多转换来转换去的代码,直接使用就行了。
下面就是我自己写的一个例子:
存文件:
QListWidgetItem *item;
QFile file("file.dat");
file.open(QIODevice::WriteOnly);
if(QDataStream out(&file))
{
item=ui->listWidget->item(0);
out << *item;
item=ui->listWidget->item(0);
out << *item;
}
读文件:
QListWidgetItem *item = new QListWidgetItem ();
QFile file("file.dat");
if(file.open(QIODevice::ReadOnly))
QFile file("file.dat");
if(file.open(QIODevice::ReadOnly))
{
QDataStream in(&file);
in >> *item;
ui->listWidget->addItem(item);
}
这样就很方便了,qt很给力!