【问题标题】:Automatically disconnect after first signal emission首次发射信号后自动断开
【发布时间】:2013-02-22 04:32:44
【问题描述】:

我正在从文件加载网页,然后我替换其中的一些 html:

    self.template_web_page = QtWebKit.QWebPage()
    self.template_web_page.mainFrame().load(QtCore.QUrl('template.html'))
    def load(ok):
        main_window.web_view.loadFinished.disconnect(load)
        self.table_element = self.template_web_page.mainFrame().findFirstElement("#table")
        self.table_element.setInnerXml(table_html)
    main_window.web_view.loadFinished.connect(load)

有没有一种方法可以连接一个信号?

【问题讨论】:

  • 您的解决方案对我来说看起来很理想..这有问题吗?
  • 如果 QTimer 上有 singleShot 方法,我认为信号上可能有类似的便捷方法

标签: qt qt4 pyqt pyqt4


【解决方案1】:

如前所述,似乎没有比这更好(更简洁)的方法了。

http://comments.gmane.org/gmane.comp.lib.qt.general/6883 建议这样的解决方案很好,尽管我自己对这样的解决方案有疑问。我发现如果我在插槽开头断开插槽(如问题中的代码中所做的那样)然后尝试执行一些 GUI 交互(设置状态栏文本是一个问题,但没有突出显示列表视图中的一行),由于 NULL 指针取消引用,我得到了一个异常。这是用于 Windows 的 Python 2.6 的 PyQt 4.6.2。当我将 disconnect() 调用移到插槽的末尾时,问题就消失了。

如果这无关紧要,请提前道歉,这只是我犯的一个愚蠢的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多