QListWidget中的InternalMove使项目消失

2023-12-24

我正在尝试在树小部件内进行拖放操作,以便能够在该小部件内移动项目。我已经设法使项目可拖动,但是当我释放鼠标按钮时,该项目就会消失。为了缩小范围,我尝试了以下示例(取自此处的另一篇文章),它与 Windows 7 上的 Qt 5.4 中的树小部件具有相同的问题:

#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();
}

When I run this code and drag/drop some items it looks like this: dragdrop

为什么拖动的项目会被删除?对我所缺少的有什么想法吗?


我在你的代码中更改了一行:

lw.setDefaultDropAction(Qt::TargetMoveAction);

现在它工作正常(Qt 5.4.1 Windows 8,Visual Studio 2013)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QListWidget中的InternalMove使项目消失 的相关文章