2011-09-02 64 views
0

我刚开始为Qt应用程序维护一组嵌入式Python插件。我也是PyQt和Python的新手,请耐心等待。PyQt QTreeWidget'扩展'信号没有被捕获

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

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

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

求值为真。当我点击儿童指示器来展开一个项目时,[+]符号变成一个减号,但没有其他事情发生。同样,当我点击[ - ]时,它会切换回[+]。我已经将ChildIndicatorPolicy设置为在两种情况下将指示符初始设置为SHOW。

在工作正常的对话框中,当用户点击加号时,将执行'expanded'处理程序。点击时只有指标可以切换。

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

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

我在日志调用一个断点,但从未达到的声明。

我失败的对话框,我的影片之上的一个前即刻连接的另一个信号,它工作得很好:

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

有没有什么东西可以阻止发射或者被抓扩展信号?另一个事件也许?我应该寻找什么?我意识到我的命名可能有点偏离,我也欢迎在这方面的任何更正。

回答

0

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

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