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