我有一个包含两个列表的窗口。此图像上的项目是从某些测试阵列预生成的。在小项目之前添加空格以使整个事物看起来像树列表:
用户可以从左向右拖动项目。我在QtDesigner中启用了这个:
然后行为是自动的,没有我的代码,但它已经将项目添加到第二个列表中:
但显然它只是复制该项目。复制项目并将其添加到正确的位置很好,但我需要在删除期间做一些事情:
那么我在哪里覆盖掉线后添加项目的功能?如何访问drop事件添加的项目?如果项目无效,如何取消活动?
我尝试覆盖QListWidget::dropEvent
,但我不知道应该编写什么代码。我查看了父类的源代码,但我不知道他们在做什么。
答案 0 :(得分:0)
我猜你已经找到了必需品,不知道我是否错过了什么,但如果你已经能够重载QListWidget :: dropEvent,你为什么不把它作为一个经典的“添加”从你的小部件处理? / p>
例如:
void QListWidget::dropEvent(QDropEvent *event)
{
const QMimeData *mimeData = event->mimeData();
Add(mimeData->text()); // probably the slot you defined for your Add button
}
我想你已经在那个插槽中有了验证器。我认为你不需要找到代码的特定部分,将元素添加到列表中然后重载它,因为你已经删除了某些东西的信息,在那一点上自己做所有事情。