首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QQmlApplicationEngine未发出警告信号

QQmlApplicationEngine未发出警告信号
EN

Stack Overflow用户
提问于 2017-08-22 04:29:50
回答 1查看 537关注 0票数 2

我正在加载一个QML文件在PyQt应用程序中,我想显示错误和警告消息,如果QML文件是无效的。在这种情况下,QQmlApplicationEngine应该发出warnings信号,但这似乎没有发生。在下面的代码中,如果QML文件包含错误,它不会被加载,但display_warnings插槽永远不会被调用。我做错了什么?PyQt版本为5.9。

代码语言:javascript
复制
# -*- coding: utf-8 -*-
from PyQt5.QtGui import QGuiApplication
from PyQt5.QtQml import QQmlApplicationEngine

def display_warnings(warnings):
    pass # Process warnings

if __name__ == '__main__':
    import os
    import sys
    app = QGuiApplication(sys.argv)
    engine = QQmlApplicationEngine()
    engine.warnings.connect(display_warnings)
    qml_filename = os.path.join(os.path.dirname(__file__), 'MainWindow.qml')
    engine.load(qml_filename)
    sys.exit(app.exec_())
EN

回答 1

Stack Overflow用户

发布于 2017-08-22 17:08:23

我不知道它在Python语言中是如何工作的,但在C++中工作得很好。有关所有QML错误的报告:

代码语言:javascript
复制
QQmlApplicationEngine engine;
QObject::connect(&engine, &QQmlApplicationEngine::warnings, [=] (const QList<QQmlError> &warnings) {
    foreach (const QQmlError &error, warnings) {
        qWarning() << "warning: " << error.toString();
    }
});

请注意,在本例中,连接类型为Qt::DirectConnection。事实上,所有的错误都与控制台的错误相同。

在我的测试中,error这个代码错误anchors.centerIn: parnt将报告两次,一次由控制台报告,另一次由warnings信号处理程序报告:

警告:"qrc:/main.qml:13: ReferenceError: parnt is not defined“

qrc:/main.qml:13: ReferenceError: parnt未定义

因此,您应该检查您的QML代码是否包含任何错误,并检查您的控制台是否产生一些警告。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45805076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档