哪里有信号itemChecked和itemUncheсked在QTreeWidget ?
Qt Signals: (quote from PyQt4 QTreeWidget documentation page)
void currentItemChanged (QTreeWidgetItem *,QTreeWidgetItem *)
void itemActivated (QTreeWidgetItem *,int)
void itemChanged (QTreeWidgetItem *,int)
void itemClicked (QTreeWidgetItem *,int)
void itemCollapsed (QTreeWidgetItem *)
void itemDoubleClicked (QTreeWidgetItem *,int)
void itemEntered (QTreeWidgetItem *,int)
void itemExpanded (QTreeWidgetItem *)
void itemPressed (QTreeWidgetItem *,int)
void itemSelectionChanged ()
在当前时刻我解决了它是这样的:
self.treeWidget.itemClicked.connect (self.handle)
def handle (item, column):
print 'emitted!', item.text(column)
if item.checkState(column) == QtCore.Qt.Checked:
# there are a lot of my functions inside which work with item data
self.handleChecked(item, column)
elif item.checkState(column) == QtCore.Qt.Unchecked:
self.handleUnchecked(item, column)
但是,这对我来说是坏的解决方案,因为itemClicked在一个真正的很多情况下发出的。 它发出的左/右鼠标点击的项目文本,这是绝对不必要(我有内self.handleChecked重功能,并在上下文菜单中打开这些不必要的调用是非常糟糕)的情况。
嗯,我还试图用itemChanged :
self.treeWidget.itemChanged.connect (self.handle)
但这样一来情况更糟! self.handle功能自称递归超越无限,因为self.handleChecked改变项数据中我的功能,这一信号连连发出。 另外,我需要信号发出只能在项目复选框切换。
谁能告诉我,我在做什么错?