Qt 如何将Mimedata保存到文件中

Qt 如何将Mimedata保存到文件中,qt,qt5,Qt,Qt5,我一直在尝试序列化我的树结构,并将其恢复回来,但收效甚微 Mimedata函数能够将树结构存储在正确的层次结构中 如何将mime数据保存到文件并将其加载回QDataStream QMimeData *TreeModel::mimeData(const QModelIndexList &indexes) const { QMimeData *mimeData = new QMimeData; QByteArray data; QDataStream stream

我一直在尝试序列化我的树结构,并将其恢复回来,但收效甚微

Mimedata函数能够将树结构存储在正确的层次结构中

如何将mime数据保存到文件并将其加载回QDataStream

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; }