QGraphicsWidget drag&drop problem
I've got QMainWindow, QGraphicsScene, QPushButton.
The problem is drag&drop only works for QPushButtons which are in QMainWindow, not for QPushButtons in QGraphicsScene.
Any hints?
Maybe i should to something with QGraphicsProxyWidget and dragEnterEvent(QGraphicsSceneDragDropEvent * event), but how?
Here is my code:
Code:
MainWindow
::MainWindow(QWidget *parent
) : ui(new Ui::MainWindow)
{
ui->setupUi(this);
QGraphicsWidget
*textEdit
= scene
->addWidget
(new QTextEdit("textedit"));
QGraphicsWidget
*pushButton1
= scene
->addWidget
(new QPushButton("pushbutton1"));
QGraphicsWidget
*pushButton2
= scene
->addWidget
(new QPushButton("pushbutton2"));
QGraphicsWidget *pushButton3 = scene->addWidget(new myGraphicsWidget(0));
QGraphicsWidget *pushButton4 = scene->addWidget(new myGraphicsWidget(0));
pushButton4->setAcceptDrops(true);
QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
layout->addItem(textEdit);
layout->addItem(pushButton1);
layout->addItem(pushButton2);
layout->addItem(pushButton3);
layout->addItem(pushButton4);
QGraphicsWidget *form = new QGraphicsWidget;
form->setLayout(layout);
scene->addItem(form);
view->setScene(scene);
view->setAcceptDrops(true);
layoucik->addWidget(new myGraphicsWidget(0));
layoucik->addWidget(new myGraphicsWidget(0));
layoucik->addWidget(view);
widget->setLayout(layoucik);
this->setCentralWidget(widget);
}
MainWindow::~MainWindow()
{
delete ui;
}
and
Code:
#include "mygraphicswidget.h"
#include <QDrag>
#include <QMimeData>
{
setAcceptDrops(true);
}
void myGraphicsWidget
::mousePressEvent(QMouseEvent *event
) {
QPoint hotSpot
= event
->pos
();
mimeData->setText("aaabbcc");
drag->setMimeData(mimeData);
drag->setHotSpot(hotSpot);
Qt::DropAction dropAction = drag->exec(Qt::CopyAction | Qt::MoveAction, Qt::CopyAction);
}
void myGraphicsWidget
::mouseMoveEvent(QMouseEvent *event
) {
}
{
if (event->mimeData()->hasText())
{
event->accept();
}
}
void myGraphicsWidget
::dropEvent(QDropEvent *event
) {
if (event->mimeData()->hasText())
{
this->setText("aaa"+event->mimeData()->text());
}
}
regards,
DizL