Qt 如何将Mimedata保存到文件中
我一直在尝试序列化我的树结构,并将其恢复回来,但收效甚微 Mimedata函数能够将树结构存储在正确的层次结构中 如何将mime数据保存到文件并将其加载回QDataStreamQt 如何将Mimedata保存到文件中,qt,qt5,Qt,Qt5,我一直在尝试序列化我的树结构,并将其恢复回来,但收效甚微 Mimedata函数能够将树结构存储在正确的层次结构中 如何将mime数据保存到文件并将其加载回QDataStream QMimeData *TreeModel::mimeData(const QModelIndexList &indexes) const { QMimeData *mimeData = new QMimeData; QByteArray data; QDataStream stream
QMimeData *TreeModel::mimeData(const QModelIndexList &indexes) const
{
QMimeData *mimeData = new QMimeData;
QByteArray data;
QDataStream stream(&data, QIODevice::WriteOnly);
QList<TreeItem *> nodes;
foreach(const QModelIndex &index, indexes) {
TreeItem *node = getItem(index);
if (!nodes.contains(node))
nodes << node;
}
stream << QCoreApplication::applicationPid();
stream << nodes.count();
foreach(TreeItem *node, nodes) {
buildTree(node, stream);
}
mimeData->setData(s_treeNodeMimeType, data);
return mimeData;
}
QMimeData*TreeModel::mimeData(常量QModelIndexList&index)常量
{
QMimeData*mimeData=新QMimeData;
QByteArray数据;
QDataStream(和数据,QIODevice::WriteOnly);
QList节点;
foreach(常量QModelIndex和索引,索引){
TreeItem*node=getItem(索引);
如果(!nodes.contains(node))
节点必须在QDataStream和QMimeData之间实现流运算符,以保存与每种格式和格式数量相关联的格式和数据
#包括
QDataStream和运算符0){
流>>格式>>格式数据;
data.setData(格式、格式数据);
}
回流;
}
int main(int argc,char*argv[])
{
质量保证申请a(argc、argv);
const QString text=“text”;
常量QString html=R“(
我的第一个标题
我的第一段
)";
常量QList URL={
{"https://stackoverflow.com/questions/58073079/how-to-save-mimedata-to-a-file"},
{"https://doc.qt.io/qt-5/"}
};
const QString mimeType=“自定义/自定义应用程序”;
常量QByteArray数据(“堆栈溢出”);
const QString path=“datastream.dat”;
{
qmiedatamimedata;
mimedata.setText(文本);
setHtml(html);
mimedata.setURL(URL);
setData(mimeType,data);
QFile文件(路径);
打开(QIODevice::WriteOnly);
QDataStream out(文件(&F);
out>mimedata;
Q_断言(mimedata.text()==text);
Q_断言(mimedata.html()==html);
Q_断言(mimedata.url()==URL);
Q_ASSERT(mimedata.data(mimeType)=数据);
}
返回0;
}