Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: harinezumi от Июль 03, 2010, 13:51



Название: Drag and Drop из QtreeWidget в QGraphicsView
Отправлено: harinezumi от Июль 03, 2010, 13:51
Subj. Необходимо дать пользователю возможность перетаскивать item`ы из QTreeWidget'a, чтобы сохранялся текст, иконка и скрытый номер(нужно будет создавать QGraphicsItem) на QGraphicsView. Оба виджета - на одной форме. Но пока не получается даже отслеживать drop элемента на QGraphicsView. AcceptDrops установлен в true в конструкторе формы. Прочитал в документации статью про drag and drop, переопределил обработчики событий, но, похоже, mousePressEvent вообще не отслеживается, а dropEvent срабатывает только один раз. Может, кто-нибудь сталкивался с подобным?
Код:
void addcondition::dragEnterEvent ( QDragEnterEvent * event )
{
    event->acceptProposedAction();
}

void addcondition::dropEvent ( QDropEvent * event )
{
    if(m_ui->toolBox->currentIndex()==0)
    {
        scene.addText(event->mimeData()->text());
        m_ui->gcond->setScene(&scene);
        m_ui->gcond->show();
    }
    event->acceptProposedAction();
}
void addcondition::mousePressEvent( QMouseEvent * event)
{
    if (event->button() == Qt::LeftButton)
    {
        QDrag *drag = new QDrag(this);
        QMimeData *mimeData = new QMimeData;
        if(m_ui->toolBox->currentIndex()==0)
            mimeData->setText(m_ui->cond_view->currentItem()->text(0));
        drag->setMimeData(mimeData);
        Qt::DropAction dropAction = drag->exec();
    }
}