crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Проблема с Drag & Drop (QTreeWidget)
0xF
  опции профиля:
сообщение 17.7.2010, 14:44
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 71
Регистрация: 12.11.2007
Пользователь №: 20

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет!

Нужно сделать перетаскивание элементов дерева на другой виджет и оставить возможность таскать элементы в самом дереве.
Посмотрел доки - сделал. Теперь из дерева на виджет таскается, а внутри дерева - нет =( Вот код:
void QCustomTree::mouseMoveEvent( QMouseEvent *event )
{
    if( !(event->buttons() & Qt::LeftButton) ) {
        return;
    }

    if( !currentItem() ) {
        return;
    }

    QDrag        *drag     = new QDrag( this );
    QMimeData    *mimeData = new QMimeData;
    QByteArray    output;

    ----- Заполняю mimeData

    drag->setMimeData( mimeData );
    drag->start( Qt::CopyAction | Qt::MoveAction );
}


Попробовал переопределять dragEnterEvent дерва:
void QCustomTree::dragEnterEvent( QDragEnterEvent *event )
{
    mimeData        = new QMimeData;

    QDrag        *drag     = new QDrag( this );
    QByteArray    output;

    ----- Заполняю mimeData

    event->accept();
}

----- В виджете куда перетаскиваю элементы
void QTargetFrame::dropEvent( QDropEvent *event )
{
    QByteArray data;

    const QMimeData *mime = event->mimeData();

    if( event->source() == ( QWidget* )sourceTreeWidget ) {
        mime = sourceTreeWidget->mimeData;
    }

    ----- Работаю с mimeData
}

При таком способе работает перетаскивание внутри дерева, но когда я перетаскиваю элемент на другой виджет - вместо того, что бы скопироваться, он перетаскивается(удаляется из дерева) =(

Как сделать правильное перетаскивание? Желательно с возможностью перетаскивать несколько элементов дерева.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 17.7.2010, 17:32
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


А что мешает ? Создай новый проектик, закинь туда минимум, показывающий проблемный код. А иначе как люди будут копаться - свой проект писать что ли ? ) Лично мне - лень (а с ходу решение не виду без копания).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.12.2024, 4:34