[Qt-interest] QMimeData problems between a QTableWidget and a QTreeWidget

Andrei Sebastian Cimpean andreiamenta at gmail.com
Sun Mar 21 07:01:48 CET 2010


Hello, i am trying to make it so when you drag from a table view to a 
tree view you can send some data and add an item to the tree view. 
I searched on the web and programmed something that i feel should 
work but, alas, it is not.
This is the treeview class. 

Favorites::Favorites(QWidget *parent)
    : QTreeWidget(parent)
{
    //building the part for the favorites list
    QTreeWidgetItem* favoritesItem = new QTreeWidgetItem();
    favoritesItem->setText(0,"Favorites");
    this->addTopLevelItem(favoritesItem);
    favoritesItem->setExpanded(true);
    this->setDragDropMode(QAbstractItemView::DropOnly);
    this->setAcceptDrops(true);
    addPathToFavorites(QString("asdsadasd"));
    refreshFavorites();
}
 
void Favorites::dragEnterEvent(QDragEnterEvent* event){
    qDebug()<< event->mimeData()->text(); // just prints out ""
    if (event->mimeData()->hasText())
             event->acceptProposedAction();
}
 
void Favorites::dropEvent(QDropEvent *event){
    qDebug()<< event->mimeData()->text();
    addPathToFavorites(event->mimeData()->text());
}

And this is the table

TableWidget::TableWidget(QWidget *parent)
    : QTableWidget(parent)
{
//i've enabled drag in the main class 
}
 
void TableWidget::mousePressEvent(QMouseEvent *event){
    if(event->button() == Qt::LeftButton)
        poss = event->pos();
    else { ;}
    QTableWidget::mousePressEvent(event);
}
 
void TableWidget::mouseMoveEvent(QMouseEvent *event){
    if(!event->buttons() & Qt::LeftButton)
        QTableWidget::mouseMoveEvent(event);
    else
    if((event->pos() - poss).manhattanLength() < 
QApplication::startDragDistance())
        QTableWidget::mouseMoveEvent(event);
    else{
        QTableWidgetItem *item = this->itemAt(event->pos());
        if(item){
            QDrag* drag = new QDrag(this);
            QMimeData* mimeData = new QMimeData;
            mimeData->setText(item->text());
            drag->setMimeData(mimeData);
            qDebug()<<drag->mimeData()->hasText()<<drag-
>mimeData()->text();//print's what it should
        }
        QTableWidget::mouseMoveEvent(event);
    }
}

What am I doing wrong? Any help will be greatly appreciated. Thank 
you.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part.
Url : http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20100321/7d1fe273/attachment.bin 


More information about the Qt-interest-old mailing list