Seite 1 von 1
Drag and Drop Event bei QTableWidgetItem
Verfasst: 17. Dezember 2006 12:39
von grosem
Hi,
ich habe mehrere QTableWidgets, deren Items man per Drag and Drop verschieben kann, auch in andere QTableWidgets rein. Mein Problem ist, dass ich gerne abfangen würde, wenn ein Item in ein anderes QTableWidget verschoben wird. Konnte leider kein geeignetes Signal/Event finden. Achja, benutzen tue ich Qt 4.2.2.
Danke für die Hilfe
Verfasst: 17. Dezember 2006 12:47
von upsala
Code: Alles auswählen
virtual bool QTableWidget::dropMimeData ( int row, int column, const QMimeData * data, Qt::DropAction action )
Verfasst: 17. Dezember 2006 13:21
von BartSimpson
Wenn du den Designer verwendest, dann besser per Eventfilter.
qobject.html#installEventFilter
Denn wenn du die virtuelle Funktion überschreiben willst, kannste den Designer nicht nutzen.
Verfasst: 17. Dezember 2006 14:47
von grosem
Danke, habe ich doch glatt übersehen.
Verfasst: 17. Dezember 2006 15:35
von grosem
BartSimpson hat geschrieben:Wenn du den Designer verwendest, dann besser per Eventfilter.
qobject.html#installEventFilter
Denn wenn du die virtuelle Funktion überschreiben willst, kannste den Designer nicht nutzen.
QTableWidgetItem ist ja nicht von QObject abgeleitet. Ich dachte dann, dass ich das so lösen kann:
Code: Alles auswählen
class Item : public QObject , public QTableWidgetItem
{
Q_OBJECT
...
}
nebst:
Code: Alles auswählen
class ItemChanged : public QObject
{
Q_OBJECT
public:
ItemChanged(){ };
protected:
bool eventFilter(QObject *obj, QEvent *event);
};
und
Code: Alles auswählen
bool ItemChanged::eventFilter(QObject *obj, QEvent *event)
{qDebug("irgendeinevent");
if (event->type() == QEvent::DragLeave) {
qDebug("dragevent");
return true;
} else {
// standard event processing
return QObject::eventFilter(obj, event);
}
}
.
Habe ich dann benutzt:
Code: Alles auswählen
Item *item1 = new Item();
ItemChanged *itemChanged = new ItemChanged();
item1->installEventFilter(itemChanged);
Jedoch wird nie ein Event herausgefiltert, ganz gleich, was ich mit dem Item mache. Wo liegt mein Denkfehler?
Verfasst: 17. Dezember 2006 15:45
von BartSimpson
Du must die Tabelle selber überwachen.
Verfasst: 17. Dezember 2006 16:21
von grosem
BartSimpson hat geschrieben:Du must die Tabelle selber überwachen.
Entschuldige, aber damit komme ich leider nicht wirklich weiter? Wie überwachen und warum funktioniert das oben versuchte nicht?
edit: Vielleicht hätte ich mal ein wenig suchen sollen:
http://qtforum.de/forum/viewtopic.php?t=3399 klingt ja recht ähnlich und jetzt glaube ich auch deinen Hinweis zu verstehen...