c++ - 如何移动 QListWidgetItem?
问题描述
如何移动QListWidgetItem
而不错过 Item 小部件?
这在拖放时有效,但不能在按钮上执行相同的工作。
解决方案
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;
}
参数是 row - 是项目行和pos +1, +2 ,-1 ,....
推荐阅读
- javascript - 谷歌地图动态标记位置不正确 - 纬度和经度是准确的
- tensorflow - 如何在 Tensorflow 2 中的模型训练期间捕获任何异常
- kotlin - 如何覆盖私有方法
- html - 空输入字段
- twitter-bootstrap - 更改引导表单验证图标
- r - 将每日数据汇总到每月与每个月关联的年份
- django - Django Rest Framework:使用 ModelViewSet 插入列表
- c++ - 在 Qtcreator 中使用共享对象时出现问题
- javascript - 如何使用javascript刷新包含视图而不是laravel中的整个视图?
- stripe-payments - 如何创建按小时自动增加 Stripe 使用量的计量订阅/订阅项目?