gibt es irgendwelche Umstände, die man beim Drag&Drop zwischen verschiedenen Applikationen beachten muss. Ich verwende den Drag&Drop Mechanismus des QAbstractItemModel und innerhalb meiner Applikation sowie zwischen zwei (gleichen) Applikationen funktioniert es wunderbar (testweise mit Mimetyp 'text/plain').
Ich kann auch den Text wunderbar von meiner Applikation in einen Texteditor ziehen, nur umgekehrt nicht.
MyApp1 -> MyApp1 [ok]
MyApp1 -> MyApp2 [ok]
MyApp1 -> TextEditor [ok]
TextEditor -> MyApp1 [not ok]
Es wird nicht einmal ein DragEnterEvent ausgelöst und über dem Fenster (View) befindet sich lediglich ein Kreis mit Balken.
Code: Alles auswählen
... m_mime_types.add("text/plain");
... m_mime_types.add("text/xml");
... this.m_view.setDragDropMode(QAbstractItemView.DragDropMode.DragDrop);
... this.m_view.setDragEnabled(true);
... this.m_view.setAcceptDrops(true);
... this.m_view.viewport().setAcceptDrops(true);
public boolean dropMimeData(QMimeData mimedata, DropAction dropaction, int arg2, int arg3, QModelIndex parent) {
if (dropaction == Qt.DropAction.IgnoreAction) {
return false;
}
Iterator<String> format_it = mimedata.formats().iterator();
while (format_it.hasNext()) {
String format = format_it.next();
if (this.m_mime_types.contains(format)) {
System.out.println("Drop: " + format);
return true;
}
}
return false;
}
public QMimeData mimeData(List<QModelIndex> modelindex_list) {
if ((modelindex_list != null) && (modelindex_list.size() > 0) && (this.m_mime_drag) ) {
QMimeData mimedata = new QMimeData();
QModelInfo modelinfo = this.IndexToInfo(modelindex_list.get(0));
String xml_data = modelinfo.GetDatenText(object_get.mime_text);
QByteArray bytearray = new QByteArray(xml_data);
mimedata.setData("text/plain", bytearray);
mimedata.setData("text/xml",bytearray);
return mimedata;
}
else {
return super.mimeData(modelindex_list);
}
}
public List<String> mimeTypes() {
return this.m_mime_types;
}