Drag&Drop von QListWidget mit Event-Filter nicht abfangb
Verfasst: 2. März 2009 00:30
Hallo,
Ich habe ein Event-Filter für mein QListWidget installiert aber bekomme keine Drag&Drop-spezifischen Ereignisse außer einem QEvent::DragEnter, aber auch nur, wenn ich ein Element aus dem View heraus und wieder herein bewege.
Da ich dieses eine Event bekomme, und der selbe Filter bei z.B. einem QLineEdit die vermissten Events empfängt, scheint mir das Verhalten recht unlogisch.
Implementation:
Deklaration:
Gruß,
FaS
Ich habe ein Event-Filter für mein QListWidget installiert aber bekomme keine Drag&Drop-spezifischen Ereignisse außer einem QEvent::DragEnter, aber auch nur, wenn ich ein Element aus dem View heraus und wieder herein bewege.
Da ich dieses eine Event bekomme, und der selbe Filter bei z.B. einem QLineEdit die vermissten Events empfängt, scheint mir das Verhalten recht unlogisch.
Implementation:
Code: Alles auswählen
MainWindow::MainWindow()
{
m_commandsListWidget_dragDropHandler = new CommandsListWidget_dragDropHandler( this, this );
m_ui.commandsListWidget->installEventFilter( m_commandsListWidget_dragDropHandler );
m_ui.commandsListWidget->setDragEnabled( true );
m_ui.commandsListWidget->setAcceptDrops( true );
m_ui.commandsListWidget->setDropIndicatorShown( true );
m_ui.commandsListWidget->setDragDropMode( QAbstractItemView::InternalMove ); // DragDrop-Mode funktioniert auch nicht
}
Code: Alles auswählen
CommandsListWidget_dragDropHandler::CommandsListWidget_dragDropHandler( QObject *parent, MainWindow *mainWindow_ )
: QObject( parent ), m_mainWindow( mainWindow_ )
{
}
bool CommandsListWidget_dragDropHandler::eventFilter( QObject *obj, QEvent *event )
{
if( event->type() == QEvent::Drop )
std::cout << "Drop" << std::endl;
return QObject::eventFilter(obj, event);
}
Code: Alles auswählen
class CommandsListWidget_dragDropHandler : public QObject
{
Q_OBJECT
public:
CommandsListWidget_dragDropHandler( QObject *parent, MainWindow *mainWindow_ );
protected:
bool eventFilter( QObject *obj, QEvent *event );
private:
MainWindow *m_mainWindow;
};
FaS