如何对 PyQt4 QTreeWidget 中的点击做出反应
Posted
技术标签:
【中文标题】如何对 PyQt4 QTreeWidget 中的点击做出反应【英文标题】:How to react on a click in PyQt4 QTreeWidget 【发布时间】:2013-07-03 12:13:00 【问题描述】:我是 Pyhthon 和 Qt 的新手,因此提出了这个基本问题。我想要的是,当我单击 QTreeWidget 中的一个项目时,会调用一个事件处理程序,它告诉我单击了哪个项目。我试过的代码是:
self.dir_tree = QTreeWidget ()
self.dir_tree.setColumnCount (3)
self.dir_tree.setHeaderLabels (("File", "Type", "Size"))
self.dir_tree.connect (dir_tree, SIGNAL ("itemClicked (QTreeWidgetItem*, int)"), self.onClickItem)
def onClickItem (self, column):
print (column)
这个不运行,错误码是:
TypeError: arguments did not match any overloaded call:
QObject.connect(QObject, SIGNAL(), QObject, SLOT(),Qt.ConnectionType=Qt.AutoConnection): argument 1 has unexpected type 'function'
QObject.connect(QObject, SIGNAL(), callable, Qt.ConnectionType=Qt.AutoConnection): argument 1 has unexpected type 'function'
QObject.connect(QObject, SIGNAL(), SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 1 has unexpected type 'function'
我做错了什么?还有一个与此相关的问题:如何确定点击了哪个项目?
我找不到这方面的教程,欢迎任何建议。
感谢您的帮助。
【问题讨论】:
【参考方案1】:这个问题问得太早了,经过大量的实验我找到了答案。代码没有提到 self.dirtree 并从 self.dir_tree 而不是 self 连接是错误的。所以正确的代码应该是:
self.connect (self.dir_tree, SIGNAL ("itemClicked(QTreeWidgetItem*, int)"), self.onClickItem)
一些实验导致了以下回调:
def onClickItem (self, item, column):
print (item, column)
Item 指的是点击的 QTreeWidgetItem 本身(在我的情况下,它是一个带有额外信息的派生类:仍然可以正常工作)和点击的列的列。
最后一个问题仍然存在。我仍然没有很好地掌握信号/插槽。欢迎任何指向好的教程的指针。
【讨论】:
以上是关于如何对 PyQt4 QTreeWidget 中的点击做出反应的主要内容,如果未能解决你的问题,请参考以下文章
QT 中的QTreeWidget控件如何让里面的item输入只输入数字