QTableWidget: Keine Daten in DropEvent

Alles rund um die Programmierung mit Qt
Antworten
-marcelp-
Beiträge: 36
Registriert: 12. Januar 2007 09:00
Kontaktdaten:

QTableWidget: Keine Daten in DropEvent

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
-marcelp-
Beiträge: 36
Registriert: 12. Januar 2007 09:00
Kontaktdaten:

Beitrag 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?
-marcelp-
Beiträge: 36
Registriert: 12. Januar 2007 09:00
Kontaktdaten:

Beitrag 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... :?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten