Hi,
Ich möchte in einem einfachen QTableWidget eine Drop Funktion implementieren, sodaß man eine Datei reinziehen kann. Dazu hab ich das eine Subklasse von QTableWidget erstellt und das dragEnterEvent und dropEvent implementiert. Wenn ich nun was in das Widget ziehe, wird das dragEnterEvent aufgerufen. Allerdings erfolgt kein Aufruf des dropEvent, wenn ich dort was fallen lasse. Es erscheint auch immer der durchgestrichene Kreis als Cursor, also kann ich nicht droppen. Hab deswegen schon
setAcceptDrops(true);
und
setDragDropMode(QAbstractItemView::DragDrop);
aufgerufen, bringt aber nix. Mehr ist in den Examples aber auch nicht gemacht! Was stimmt da nicht?
[gelöst]QTableWidget: drag geht, drop nicht
[gelöst]QTableWidget: drag geht, drop nicht
Zuletzt geändert von michams am 28. Januar 2009 17:35, insgesamt 1-mal geändert.
Im dragEnterEvent legst Du normalerweise fest, welche Typen angenommen werden. Sobald Du den Event also überschreibst, wird erstmal alles abgewiesen. Du könntest den dragEnterEvent einfach weg lassen oder Du packst etwa so was rein:
Damit würden z.B. Dateien angenommen werden.
Code: Alles auswählen
// ohne Gewähr da keinerlei Sicherungen drin sind
void myWidget::dragEnterEvent(QDragEnterEvent *e)
{
const QMimeData* mime = e->mimeData();
QStringList sl = mime->formats();
QString t = sl[0];
if (t!="text/uri-list")
e->ignore();
else
e->accept();
}
nee, das geht auch nicht. Ich hatte auch schon ein acceptProposedAction in dragEnterEvent drin. Auch das weglassen der Funktion bringt nichts. Das ganze über den Event Filter zu implementieren führt zum selben Ergebnis, drag geht, drop nicht.
Was mich irritiert ist, daß der Mauszeiger sich nicht so verändert, wie er es tut, wenn ein Widget drunter liegt, das drops akzeptiert. Das Droppen scheint immer noch deaktiviert zu sein. Nun hab ich keine Ahnung, was ich da noch einstellen soll und auch im Manual find ich keine Hinweise mehr, was da schief läuft.
Was mich irritiert ist, daß der Mauszeiger sich nicht so verändert, wie er es tut, wenn ein Widget drunter liegt, das drops akzeptiert. Das Droppen scheint immer noch deaktiviert zu sein. Nun hab ich keine Ahnung, was ich da noch einstellen soll und auch im Manual find ich keine Hinweise mehr, was da schief läuft.