PyQt QTreeWidget'扩展'信号未被捕获

时间:2011-09-02 23:01:00

标签: pyqt signals qtreewidgetitem

我刚开始为Qt应用程序维护一组嵌入式Python插件。我也是PyQt和Python的新手,所以请耐心等待。

我在一个对话框中有一个QTreeWidget的实现,其中“扩展”信号没有被相应的处理程序捕获。我有另一个对话框,它可以正常工作。

在问题对话框中,我可以验证连接是否成功。

connected = wdg.connect(wdg.treeView_,SIGNAL("expanded(QTreeViewItem*)"), wdg.expanded)

评估为True。当我单击子指示器以展开项目时,[+]符号会变为减号,但不会发生任何其他情况。同样,当我点击[ - ]时,它会切换回[+]。在两种情况下,我都将ChildIndicatorPolicy设置为最初将指标设置为SHOW。

在可以正常工作的对话框中,当用户点击加号时,会执行“展开”处理程序。只有指针在单击时切换。

我的处理程序代码很简单:

def expanded(self, item):
    logging.debug("In expanded handler")

我在记录调用时有一个断点,但是从未到达该语句。

我失败的对话框,我有另一个信号在上面的信号之前就已经连接了,它运行得很好:

wdg.connect(wdg.treeView_,SIGNAL("currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)"), wdg.itemChanged)

是否有任何可以阻止扩大信号发射或被捕获的东西?也许是另一件事?我应该寻找什么?我意识到我的命名可能有些偏差,我也欢迎在这方面做出任何修正。

2 个答案:

答案 0 :(得分:2)

QTreeView扩展事件的信号为"expanded(QModelIndex)"

或者,考虑使用new style signal/slot syntax。我发现它比查找特定信号的确切参数类型容易得多。

wdg.treeView_.expanded.connect(wdg.expanded)

答案 1 :(得分:0)

我发现了问题。尽管名称误导,但对象是QTreeWidge。当我将信号名称从"expanded"替换为"itemExpanded"并将参数类型更改为QTreeWidgetItem*时,一切正常。

wdg.connect(wdg.treeView_, SIGNAL("itemExpanded(QTreeWidgetItem*)"), wdg.expanded)