2016-05-21 14 views
0

Gibt es irgendwelche Ideen, wie ich QMap<QString, QString> im Drag and Drop-Modus mit QMimeData übertragen kann?QMap von QMimeData senden

Jetzt konvertieren i QMap in QString wie folgt aus: "key1:value1;key2:value2;...keyN:valueN" und es QMimeData::setText() zugeordnet.

Dann auf dropEvent() ich Umbau QMap von QString. Ist das richtig?

Convert 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]); 
    } 
    ... 

Antwort

3

Das auseinander fallen geht, wenn die Saiten die Separatoren enthalten. Für einen robusteren Ansatz verwenden Sie etwas wie

QByteArray ba; 
QDataStream ds(&ba, QIODevice::WriteOnly); 
map >> ds; 

mimeData->setData(QStringLiteral("your/mime/type"), ba);