Drag and Drop Event bei QTableWidgetItem

Verschiedenes zu Qt
Antworten
grosem
Beiträge: 17
Registriert: 4. Juni 2006 15:52

Drag and Drop Event bei QTableWidgetItem

Beitrag 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
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Code: Alles auswählen

virtual bool QTableWidget::dropMimeData ( int row, int column, const QMimeData * data, Qt::DropAction action )
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag 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.
grosem
Beiträge: 17
Registriert: 4. Juni 2006 15:52

Beitrag von grosem »

Danke, habe ich doch glatt übersehen.
grosem
Beiträge: 17
Registriert: 4. Juni 2006 15:52

Beitrag 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?
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Du must die Tabelle selber überwachen.
grosem
Beiträge: 17
Registriert: 4. Juni 2006 15:52

Beitrag 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...
Antworten