我刚刚开始为 Qt 应用程序维护一组嵌入式 Python 插件。我也是 PyQt 和 Python 的新手,所以请耐心等待。
我在一个对话框中有一个 QTreeWidget 的实现,其中“扩展”信号没有被相应的处理程序捕获。我有另一个对话框,它工作得很好。
在问题对话框中,我可以验证连接是否成功。
connected = wdg.connect(wdg.treeView_,SIGNAL("expanded(QTreeViewItem*)"), wdg.expanded)
评估为真。当我单击子指示器以展开项目时,[+] 符号变为减号,但没有其他任何反应。同样,当我单击 [-] 时,它会切换回 [+]。在这两种情况下,我已将 ChildIndicatorPolicy 设置为最初将指标设置为 SHOW。
在正常工作的对话框中,当用户单击加号时,将执行“扩展”处理程序。只有指示器在单击时才会切换。
我的处理程序代码很简单:
def expanded(self, item):
logging.debug("In expanded handler")
我在日志记录调用中有一个断点,但从未到达该语句。
在失败的对话框中,我有另一个信号在上述信号之前立即连接,它工作得很好:
wdg.connect(wdg.treeView_,SIGNAL("currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)"), wdg.itemChanged)
有什么东西可以防止扩展信号发射或被捕获吗?也许是另一个事件?我应该寻找什么?我意识到我的命名法可能有点偏离,我也欢迎在这方面进行任何更正。