消除 QWebChannel 属性通知器信号警告

Posted

技术标签:

【中文标题】消除 QWebChannel 属性通知器信号警告【英文标题】:Eliminate QWebChannel property notifier signal warnings 【发布时间】:2019-01-17 00:35:45 【问题描述】:

我正在使用QWebEngineViewQWebChannel,类似于:

class AppView(QWebEngineView):
    def __init__(self):
        QWebEngineView.__init__(self)
        self.ch = QWebChannel(self.page())
        self.page().setWebChannel(self.ch)

然后我打电话:

self.ch.registerObject('app',self)

一切正常。但是,然后我会收到这样的日志垃圾邮件:

... 对象 'AppView' 的属性 'title'' 没有通知信号并且不是常量,html 中的值更新将被破坏! 对象 'AppView' 的属性 'url'' 没有通知信号并且不是常量,HTML 中的值更新将被破坏! 对象 'AppView' 的属性 'selectedText'' 没有通知信号并且不是常量,HTML 中的值更新将被破坏! 对象 'AppView' 的属性 'hasSelection'' 没有通知信号并且不是常量,HTML 中的值更新将被破坏! 对象 'AppView' 的属性 'zoomFactor'' 没有通知信号并且不是常量,HTML 中的值更新将被破坏! ...

这些似乎是已被拉入的派生QWebEngineView 类的属性。有没有办法正确派生它,或者整个结构是否需要更改,以便我不会拉入QWebEngineView ?

AppView 在 JS 代码中还有其他需要的信号和槽。

【问题讨论】:

一种解决方案是简单地避免注册具有没有通知信号的属性的对象(例如,使用子类QObject 的委托)。但是,在许多情况下,这可能会带来不便。因此,可能比install a message handler 更可取,只需从源头过滤掉所有日志垃圾邮件。 【参考方案1】:

禁用所有 qt 警告:

QtCore.qInstallMessageHandler(lambda x,y,z: None)

在内部输入您的自定义处理程序函数以进行详细过滤

【讨论】:

以上是关于消除 QWebChannel 属性通知器信号警告的主要内容,如果未能解决你的问题,请参考以下文章

在 javascript 中实例化 QWebChannel 对象时的警告

如何注册一个类以在 Qt 的 QWebChannel 信号中使用它

自定义管道以消除警告

具有节点通知器的电子显示窗口10通知

matlab 如何消除信号的高频分量

ruby 可选的Jekyll猴子补丁使用终端通知器来指示Jekyll构建完成。放入_plugins / ext.rb