[gelöst]QTableWidget: drag geht, drop nicht

Alles rund um die Programmierung mit Qt
Antworten
michams
Beiträge: 56
Registriert: 14. November 2005 18:24

[gelöst]QTableWidget: drag geht, drop nicht

Beitrag von michams »

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?
Zuletzt geändert von michams am 28. Januar 2009 17:35, insgesamt 1-mal geändert.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

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:

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();
}
Damit würden z.B. Dateien angenommen werden.
michams
Beiträge: 56
Registriert: 14. November 2005 18:24

Beitrag von michams »

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.
michams
Beiträge: 56
Registriert: 14. November 2005 18:24

Beitrag von michams »

ICH HABS! :shock: im Manual etwas weiter unten steht, daß für Widgets auch dragMoveEvent reimplementiert werden muß ... und schon geht's
CLRS530
Beiträge: 155
Registriert: 8. Oktober 2007 18:00

Beitrag von CLRS530 »

Schönen Dank, das hat mir sehr weitergeholfen. Ich stand vor dem selben Ergebnis.
Antworten