如何移动QListWidgetItem?

问题描述 投票:0回答:1

如何移动QListWidgetItem,不要错过物品小部件?

这在拖放时有效,但不能在按钮上完成相同的工作。

c++ qt qlistwidget
1个回答
0
投票
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,....

© www.soinside.com 2019 - 2024. All rights reserved.