【问题标题】:How to move QListWidgetItem?如何移动 QListWidgetItem?
【发布时间】:2020-05-26 13:05:55
【问题描述】:

如何移动QListWidgetItem又不错过Item小部件?

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

【问题讨论】:

  • 移动是什么意思?喜欢在列表中上下?缺少一个项目小部件是什么意思?
  • 据我了解,他可以通过拖放来移动项目,但他也想通过按下按钮来移动它。但我不确定。
  • 是的,我没有找到任何机制如何使用项目小部件向上和向下移动 QListWidgetItem。

标签: c++ qt qlistwidget


【解决方案1】:
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;
}

参数是行 - 是一个项目 rowpos +1, +2 ,-1 ,....

【讨论】:

    猜你喜欢
    • 2022-11-01
    • 2017-12-28
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多