Russian Qt Forum
Ноябрь 06, 2024, 12:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [solved] drag&drop. acceptProposedAction не пашет  (Прочитано 2859 раз)
unkier
Гость
« : Декабрь 05, 2009, 19:23 »

пытаюсь сделать перетаскивание из QListWidget в QTreeWidget. драгается нормально, курсор меняется и если кинуть куда нибудь за пределы формы то текст вставляется.
но если перетащить на мой QTreeWidget, dragEnterEvent срабатывает, в нем я делаю
event->acceptProposedAction()
но нифига не происходит, курсор остается со знаком запрета дропа. dropEvent вообще никогда не вызывается соответственно.

QListWidget
Код:
void QDragListWidget::mousePressEvent(QMouseEvent *event)
{
  if (event->button() == Qt::LeftButton)
    m_dragStartPosition = event->pos();
}

void QDragListWidget::mouseMoveEvent(QMouseEvent *event)
{
  if (!(event->buttons() & Qt::LeftButton))
    return;

  if ((event->pos() - m_dragStartPosition).manhattanLength() < QApplication::startDragDistance())
    return;

  QListWidgetItem *item = this->itemAt(event->pos());

  if (item != NULL)
  {
    qDebug() << "Starting drag";
    QDrag *drag = new QDrag(this);
    QMimeData *mimeData = new QMimeData;

    mimeData->setText("text/html");

    drag->setMimeData(mimeData);
    drag->setPixmap(QPixmap(":/icons/icons/cog.png"));

    Qt::DropAction dropAction = drag->exec(Qt::MoveAction);
    qDebug() << "drag end "<< dropAction;


  }

}

QTreeWidget
Код:
void QDropTreeWidget::dragEnterEvent(QDragEnterEvent *event)
{
  event->acceptProposedAction();
  qDebug() << "acceptProposedAction " << event->dropAction();
}

void QDropTreeWidget::dropEvent(QDropEvent *event)
{

  event->acceptProposedAction();
  qDebug() << "drop";
}


в QTreeWidget, setAcceptDrops(true) стоит в конструкторе

хз куда копать

всё оказалось просто. надо перегружать еще и dragMoveEvent.
ответ нашел тут http://www.qtcentre.org/forum/f-qt-programming-2/t-i-receive-qdragenterevent-but-not-qdropevent-25117.html/?highlight=drag
« Последнее редактирование: Декабрь 06, 2009, 19:43 от unkier » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.101 секунд. Запросов: 20.