Есть QTreeWidgetItem, у каждого элемента есть IDшник, в зависимости от него нужно рисовать то или иное на QGraphicsView при перетаскивании.
Пока не приделывал QGraphicsScene к QGraphicsView, перетаскивание работало, теперь даже QDebug, который расположил в соответствующем обработчике событий, перестал работать.
Определил QGraphicsScene в хидере, чтобы можно было обращаться к ней из любого метода объекта-формы:
QGraphicsScene *scene;
В конструкторе формы инициализирую указатель и привязываю QGraphicsScene к QGraphicsView:
m_ui->cond_view->setDragEnabled(true);
m_ui->term_view->setDragEnabled(true);
m_ui->oper_view->setDragEnabled(true);//виджеты, с которых будем перетаскивать
scene = new QGraphicsScene(this);//инициализируем сцену
m_ui->gcond->setScene(scene);//привязываем её
setAcceptDrops(true);//по всей форме разрешены drop`ы
m_ui->gcond->setAcceptDrops(true);//на всякий случай здесь тоже персонально разрешаем Drop
Обработка drag & drop:
void addcondition::dropEvent ( QDropEvent * event )
{
//qDebug()<<m_ui->cond_view->currentItem()->statusTip(0); //это работало до того, как было сделано обращение к сцене
event->acceptProposedAction();
scene->addText(m_ui->cond_view->currentItem()->statusTip(0));
m_ui->gcond->show();//не работает
}
void addcondition::dragEnterEvent(QDragEnterEvent *event)
{
event->acceptProposedAction();
}
void addcondition::mouseMoveEvent( QMouseEvent * event)
{
if (event->button() == Qt::LeftButton)
{
QDrag *drag = new QDrag(this);
Qt::DropAction dropAction = drag->exec();
}
}
К сожалению, в документации ничего вразумительного не нашел>_> Может, кто-нибудь работал с QGraphicsView?