Seite 1 von 1

QTableWidget: Keine Daten in DropEvent

Verfasst: 28. März 2010 23:41
von -marcelp-
Hallo zusammen,

ich habe eine MDI-Anwendung, in der ich Daten von einer Tabelle in eine Andere(QTableWidget tblDat) per D&D ziehen möchte.
Nach schalten von tblDat->setAcceptDrops(true) kann ich die Daten kopieren, aber eben nicht so wie ich es brauche.

Also habe ich wie folgt reimplementiert...

class myTbl : public ::QTableWidget{

public:
myTbl(QWidget *parent = 0, Qt::WFlags fl = 0);
~myTbl();

protected:
void dropEvent(QDropEvent *event);

};

...und anschließend tblDat vom Typ myTbl (statt QTableWidget) erstellt.

Nun mein Problem:
Beim droppen wird die Funktion dropEvent(QDropEvent *event) aufgerufen, ich komme aber nicht an die Daten. Zum Beispiel ist event->mimeData()->hasText() == false.

Wer weiß, wo mein Fehler liegt?

Marcel

Verfasst: 29. März 2010 06:31
von Christian81
Warum sollte event->mimeData()->hasText() true sein? Fügst Du die Daten in das Event oder Qt? Wenn Qt - woher weißt Du wleches Format Qt verwendet?

Verfasst: 29. März 2010 14:33
von -marcelp-
OK, mein Fehler. Ich dachte so kann ich feststellen, ob Daten übergeben wurden. Am DragEvent habe ich nichts verändert, die Daten kommen also von Qt.

Wie kann ich denn in meiner Funktion auf die Daten zugreifen?

Verfasst: 31. März 2010 00:11
von -marcelp-
Mein Fehler/ Part two...

scheinbar gab es keine Daten.
Ich habe zusätzlich noch das DragEvent implementiert:

void myTbl::dragEnterEvent(QDragEnterEvent *event){

QString txt = this->item(this->currentRow(), 0)->text();

for(int a = 1; a < this->columnCount(); a++)
txt.append(";" + this->item(this->currentRow(), a)->text());

event->mimeData()->setText(txt);

}

Jetzt kann ich über qDebug sehen, daß das Event aufgerufen wird und die Daten meiner aktuellen Tabellenzeile in txt abgelegt werden.
Beim Aufruf von mimeData()->setText(txt) bekomme ich aber diese Fehlermeldung:

> passing 'const QMimeData' as 'this' argument of 'void QMimeData::setText(const QString&)' discards qualifiers

Bestimmt bin ich kurz vorm Ziel, kann aber mit dem Satz nichts anfangen... :?

Verfasst: 31. März 2010 06:33
von Christian81
Das ist definitiv das falsche Event. Siehe http://qt.nokia.com/doc/4.6/qabstractit ... EnterEvent
Ich denke da sollte alles stehen: http://doc.trolltech.com/4.6/model-view-dnd.html