speichern einer Adresse in einen QMimeData
Verfasst: 9. Februar 2008 15:22
Ich habe zwei Probleme. Mein Vorhaben war, dass ich in ein QListWidgetItem mit setData die Adresse einer Klasse ablege und sie dann später über Drag and Drops übergebe. Leider funktioniert das beides nicht, weil QVariant und DataStream das verhindern.
Das startDrag scheint sogar noch zu funktionieren... Bis auf dass ich nicht von QVariant zu Unit* zurückcasten kann, ich frage mich als als was wohl die Adresse gespeichert wurde und ob ??!
und zu guter Letzt:
Ich weis im Moment leider nicht, wie ich die Adresse über ein Drag and Drop an ein anderes Widget übergebn könnte. Außerdem denke ich, dass das wohl auch nicht Sinn und Zweck ist, aber wie könnte man sowas noch regeln? Danke im Voraus. 
Code: Alles auswählen
pieceItem->setData(1, army->units.at(i));
Code: Alles auswählen
void ListWidget::startDrag(Qt::DropActions /*supportedActions*/)
{
QListWidgetItem *item = currentItem();
QByteArray itemData;
QDataStream dataStream(&itemData, QIODevice::WriteOnly);
QPoint location = item->data(Qt::UserRole+1).toPoint();
dataStream << item->data(1) << location;
Code: Alles auswählen
void ListWidget::dropEvent(QDropEvent *event)
{
std::cout<<"dropEvent"<<std::endl;
if (event->mimeData()->hasFormat("unit_list/unit") ) {
QByteArray pieceData = event->mimeData()->data("unit_list/unit" );
QDataStream dataStream(&pieceData, QIODevice::ReadOnly);
Unit *unit_adr;
QPoint location;
// dataStream >> unit_adr >> location;