通过 QMimeData 传输 QMap



有什么想法如何使用QMimeData在拖放模式下传输QMap<QString, QString>吗?

现在我像这样将QMap转换为QString"key1:value1;key2:value2;...keyN:valueN"并将其分配给QMimeData::setText().

然后在dropEvent()我从QString重建QMap.这是正确的方法吗?

将 QString 转换为 QMap

    ...
    QStringList splittedParams = params.split(";");
    QMap<QString, QString> *map = new QMap<QString, QString>();
    foreach(QString param, splittedParams)
    {
        if(param.isEmpty()) continue;
        QStringList str = param.split(":");
        map->insert(str[0], str[1]);
    }
    ...

如果您的字符串包含分隔符,这将分崩离析。对于更强大的方法,请使用类似

QByteArray ba;
QDataStream ds(&ba, QIODevice::WriteOnly);
map >> ds;
mimeData->setData(QStringLiteral("your/mime/type"), ba);

相关内容

  • 没有找到相关文章

最新更新