如何移动QListWidgetItem
,不要错过物品小部件?
这在拖放时有效,但不能在按钮上完成相同的工作。
removeItemWidget( item(row) );
QCoreApplication::removePostedEvents (p_widget,QEvent::DeferredDelete );
我删除了Item中显示的小部件,并以从队列中删除删除信号的方式制作了补丁。这样我就可以将Widget移至另一个项目
int DropList::moveWidget(int row, int pos)
{
const int new_row = row+pos;
if(count()>1 && row>=0 && row <count() && new_row>=0 && new_row<count())
{
// A->B
DropListItem *pA = widgetByRow(row);
DropListItem *pB = widgetByRow(new_row);
if(pB->isMovable() && pA->isMovable())
{
removeItemWidget(item(new_row));
removeItemWidget(item(row));
QCoreApplication::removePostedEvents (pB,QEvent::DeferredDelete );
QCoreApplication::removePostedEvents (pA,QEvent::DeferredDelete );
setItemWidget(item(new_row),pA);
setItemWidget(item(row),pB);
}
emit changed();
return new_row;
}
return 0;
}
参数是行-是项行和pos +1,+2,-1,....