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



我有一个小部件,它使用QWebChannel创建了一个谷歌地图实例。在javascript中实例化QWebChannel时,会出现以下几个警告:

Property 'accessibleName'' of object 'MapWindow' has no notify signal and is not constant, value updates in HTML will be broken!
Property 'accessibleDescription'' of object 'MapWindow' has no notify signal and is not constant, value updates in HTML will be broken!
Property 'layoutDirection'' of object 'MapWindow' has no notify signal and is not constant, value updates in HTML will be broken!
Property 'autoFillBackground'' of object 'MapWindow' has no notify signal and is not constant, value updates in HTML will be broken!
Property 'styleSheet'' of object 'MapWindow' has no notify signal and is not constant, value updates in HTML will be broken!
Property 'locale'' of object 'MapWindow' has no notify signal and is not constant, value updates in HTML will be broken!
Property 'windowFilePath'' of object 'MapWindow' has no notify signal and is not constant, value updates in HTML will be broken!
Property 'inputMethodHints'' of object 'MapWindow' has no notify signal and is not constant, value updates in HTML will be broken!
var backend = null;
new QWebChannel(qt.webChannelTransport, function(channel) {
backend = channel.objects.backend;
backend.getRef(function(ref) {
backend.getCenter(function(center) {
backend.getPoints(function(points){
map = new google.maps.Map(document.getElementById('map'), {
center: center[0],
zoom: 10
});
...
self.mapView = QWebEngineView()
self.webchannel = QWebChannel(self.mapView)
self.mapView.page().setWebChannel(self.webchannel)
self.webchannel.registerObject('backend', self)
current_dir = os.path.dirname(os.path.realpath(__file__))
filename = os.path.join(current_dir, '.Resourcesindex.html')
self.mapView.load(QUrl.fromLocalFile(filename))

QWebChannel将分析注册对象的q属性,验证它们是否具有关联信号。在你的警告消息的情况下,我推断"self"是一个QWidget,所以它有许多q属性,没有发出错误信号的相关信号。

鉴于上述情况,有两种解决方案:

  • 通过禁用qInstallMessageHandler使错误消息静音:
QtCore.qInstallMessageHandler(lambda *args: None)
  • 不要使用"self"作为后端,而是使用QObject
class Backend(QObject):
# getRef, getCenter, getPoints
self.backend = Backend(self)
self.webchannel.registerObject('backend', self.backend)

相关内容

  • 没有找到相关文章

最新更新