我正在尝试在树小部件内进行拖放操作,以便能够在该小部件内移动项目。我已经设法使项目可拖动,但是当我释放鼠标按钮时,该项目就会消失。为了缩小范围,我尝试了以下示例(取自此处的另一篇文章),它与 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:
为什么拖动的项目会被删除?对我所缺少的有什么想法吗?
我在你的代码中更改了一行:
lw.setDefaultDropAction(Qt::TargetMoveAction);
现在它工作正常(Qt 5.4.1 Windows 8,Visual Studio 2013)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)