2015-05-17 7 views
2

Я пытаюсь сделать перетаскивание внутри работы виджета дерева, чтобы иметь возможность перемещать элементы внутри этого виджета. Мне удалось сделать элементы перетаскиваемыми, но когда я отпускаю кнопку мыши, элемент исчезает. Чтобы сузить это я попытался следующий пример (взятый из другого поста здесь, на SO), который имеет те же проблемы, как мое дерево виджета в Qt 5.4 на Windows 7:InternalMove в QListWidget делает элемент исчезающим

#include <QListWidget> 

int main(int argc, char **argv) 
{ 
    QApplication a(argc, argv); 

    QListWidget lw; 

    for(int i = 1; i < 10; ++i) 
     lw.addItem(new QListWidgetItem(QString("Item %1").arg(i))); 
    lw.setDragEnabled(true); // *** 
    lw.viewport()->setAcceptDrops(true); // *** 
    lw.setDefaultDropAction(Qt::MoveAction); // *** 
    lw.setDropIndicatorShown(true); // *** 

    lw.setDragDropMode(QAbstractItemView::InternalMove); 

    lw.show(); 

    a.connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit())); 
    a.exec(); 
} 

Когда я запускаю этот код и перетащить/drop некоторые предметы выглядят так: dragdrop

Почему удаленный предмет удален? Любые идеи о том, чего я не хватает?

ответ

3

Я изменил одну строку в коде:

lw.setDefaultDropAction(Qt::TargetMoveAction); 

и теперь он работает отлично (Qt 5.4 .1 Windows 8, Visual Studio 2013).

3

Это bug в Qt 5.4.1, код корректно работать на Qt 4.8.6

Смежные вопросы