PyQt中的拖放功能

2 投票
1 回答
1655 浏览
提问于 2025-04-16 10:47

我刚开始学习PyQt,遇到了一些问题。我在谷歌、PyQt的文档和Mr. Summerfield的书里都找过,但还是没找到解决办法。

我有一个QListWidget和一个QTableWidget,它们都可以拖放。我用的是这个例子:http://zetcode.com/tutorials/pyqt4/dragdrop/

这个例子运行得很好,因为我可以把ListWidget里的文本拖到TableWidget里,然后继续处理这些文本。

但是我希望在把文本拖到WidgetList后,能够立即获取到这个文本,而不需要再点击单元格。

我尝试了:

SIGNAL("itemChanged(QTableWidgetItem*)")
SIGNAL("currentItemChanged(QTableWidgetItem *,QTableWidgetItem *)")

但是没有结果。

如果有人能帮我,我会非常感激。

提前谢谢你的帮助。

1 个回答

2

我不是很明白你的问题,但我猜你的意思是想在放下某个项目后,选择或者高亮显示它?无论如何,这段代码可以让你获取到被放下的QTableWidgetItem,这样你就可以设置焦点、选择它等等。

如果是这样的话,你需要在你的放下事件中去做这个操作。

def dropEvent(self, e)

    # Here's your QTablewidgetItem
    item = self.itemAt(e.pos())

    # Assuming "self" is a QTableWidget, by default will select it as well
    self.setCurrentItem(item)

    # It's also good practice to accept an event you've overwritten

    # Depending on what you're doing, it will be either 
    # QtGui.QTableWidget.dropEvent(self, e)
    # or 
    # e.accept()

撰写回答