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
){
//building the part for the favorites list
favoritesItem->setText(0,"Favorites");
this->addTopLevelItem(favoritesItem);
favoritesItem->setExpanded(true);
this->setAcceptDrops(true);
addPathToFavorites
(QString("asdsadasd"));
refreshFavorites();
}
qDebug()<< event->mimeData()->text(); // just prints out ""
if (event->mimeData()->hasText())
event->acceptProposedAction();
}
qDebug()<< event->mimeData()->text();
addPathToFavorites(event->mimeData()->text());
}
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());
}
To copy to clipboard, switch view to plain text mode
And this is the table
TableWidget
::TableWidget(QWidget *parent
){
//i've enabled drag in the main class
}
if(event->button() == Qt::LeftButton)
poss = event->pos();
else { ;}
}
if(!event->buttons() & Qt::LeftButton)
else
if((event
->pos
() - poss
).
manhattanLength() <
QApplication::startDragDistance()) else{
if(item){
mimeData->setText(item->text());
drag->setMimeData(mimeData);
qDebug()<<drag->mimeData()->hasText()<<drag->mimeData()->text();//print's what it should
}
}
}
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);
}
}
To copy to clipboard, switch view to plain text mode
What am I doing wrong? Any help will be greatly appreciated. Thank you.
Bookmarks