2016-05-21 14 views
0

Есть ли какие-либо идеи, как я могу передать QMap<QString, QString> в режиме перетаскивания с помощью QMimeData?Передача QMap по QMimeData

Теперь я конвертировать QMap в QString, как это: "key1:value1;key2:value2;...keyN:valueN" и назначили его QMimeData::setText().

Затем на dropEvent() i rebuild QMap от QString. Правильно ли это?

Преобразовать 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]); 
    } 
    ... 

ответ

3

Это собирается развалиться, если ваши строки содержат разделители. Для более надежного подхода используйте что-то вроде

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^