PDA

View Full Version : DropIndicator is empty when moving an item from QTreeWidget to QTableWidget



gboelter
8th October 2010, 06:38
Good am!

I have just startet to deal with DnD and I got it working already.

But there is one problem left: The DropIndicator is empty! Means, there is the '+'-sign and a small empty square only while copying an item.

I guess, it's not not a big thing but I was not able to find it out by myself.

Here is some code:

tablewidget.h


class TableWidget : public QTableWidget
{
Q_OBJECT
public:
TableWidget( QWidget *parent = 0 );
protected:
void dropEvent( QDropEvent *event );
void dragEnterEvent( QDragEnterEvent *event );
void dragMoveEvent( QDragMoveEvent* event );
private:
TableWidget *tableWidget;
};


tablewidget.cpp


#include "tablewidget.h"

TableWidget::TableWidget( QWidget *parent )
: QTableWidget( parent )
{
setAcceptDrops( true );
}

void TableWidget::dropEvent( QDropEvent *event )
{
itemAt( event->pos() )->setText( event->mimeData()->text() );
event->acceptProposedAction();
}

void TableWidget::dragEnterEvent( QDragEnterEvent *event )
{
event->acceptProposedAction();
}

void TableWidget::dragMoveEvent( QDragMoveEvent* event )
{
event->accept();
}


treewidget.h


class TreeWidget : public QTreeWidget
{
Q_OBJECT

public:
TreeWidget( QWidget *parent = 0 );
protected:
void mouseMoveEvent( QMouseEvent *event );
private:
TreeWidget *treeWidget;
};


treewidget.cpp



TreeWidget::TreeWidget( QWidget *parent )
: QTreeWidget( parent )
{
setDragEnabled( true );
}

void TreeWidget::mouseMoveEvent( QMouseEvent *event )
{
if ( ! ( event->buttons() & Qt::LeftButton ) )
return;

if ( currentItem() == NULL )
return;

QDrag *drag = new QDrag( this );
QMimeData *mimeData = new QMimeData;

mimeData->setText( currentItem()->text( 0 ) );
drag->setMimeData( mimeData );

drag->start( Qt::CopyAction | Qt::MoveAction );
}


Any idea what's missing?

gboelter
8th October 2010, 09:25
Found an old thread about the same problem:

http://www.qtcentre.org/threads/12193-Drop-indicator-not-displaying-with-QTreeView.-Need-help

Unfortunately it ends without a solution ... :(

gboelter
8th October 2010, 17:12
I have tried this sample now: http://sector.ynet.sk/qt4-tutorial/dnd.html

Same problem. The moment I'll subclass QTableWidget/QTreeWidget the drop-indicaor is empty.

I have tried it under Linux with Qt 4.6.3. and Qt 4.7.0, same problem ... :(