我正在研究一个可排序的小型 QlistView。
iListView = new QListView(this);
//Creating a standard item model
iStandardModel = new QStandardItemModel(this);
//First item
QStandardItem* item1 = new QStandardItem(QIcon(":/cover-story-album-art.jpg"),"First Item");
//Second item
QStandardItem* item2 = new QStandardItem(QIcon(":/cover-story-album-art.jpg"),"Second item");
//third item
QStandardItem* item3 = new QStandardItem(QIcon(":/cover-story-album-art.jpg"),"Third item");
//Appending the items into model
iStandardModel->appendRow(item1);
iStandardModel->appendRow(item2);
iStandardModel->appendRow(item3);
//Setting the icon size
iListView->setIconSize(QSize(40,30));
//Setting the model
iListView->setModel(iStandardModel);
//Setting listview geometry
iListView->setGeometry(QRect(0,0,240,320));
iListView->setDragEnabled(true);
iListView->setAcceptDrops(true);
iListView->setDragDropMode(QAbstractItemView::InternalMove);
好吧,拖放工作但有一个问题,如果我将项目放在列表末尾以外的任何其他项目上替换。“拖动”项目替换“释放”项目。QListView在不同场景下的截图
最佳答案
那是因为默认情况下 QStandardItem
有 Qt::ItemIsDropEnabled
标志设置。只需使用 QStandardItem::setFlags()
删除它功能。添加以下几行:
item1->setFlags(item1->flags() ^ (Qt::ItemIsDropEnabled));
item2->setFlags(item2->flags() ^ (Qt::ItemIsDropEnabled));
item3->setFlags(item3->flags() ^ (Qt::ItemIsDropEnabled));
iListView->showDropIndicator(); // For convenience..
关于Qt 拖放 QListView 删除释放它的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10990571/