【问题标题】:Qt ERROR: Signal QQmlEngine::quit() emitted, but no receivers connected to handle itQt 错误:发出信号 QQmlEngine::quit(),但没有连接接收器来处理它
【发布时间】:2019-08-20 21:52:04
【问题描述】:

我写了一个示例 PySide2/QML 代码,但我无法退出程序。

PySide2 代码:

import sys
from PySide2.QtGui import QGuiApplication
from PySide2.QtCore import QCoreApplication, Qt, QUrl
from PySide2.QtQuick import QQuickView

QCoreApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
app = QGuiApplication(sys.argv)

view = QQuickView(QUrl('view.qml'))
view.show()

sys.exit(app.exec_())

QML 代码:

import QtQuick 2.3
import QtQuick.Controls 1.4

Rectangle {
    width: 200
    height: 200
    color: "green"

    Button {
        text: "Hello World"
        anchors.centerIn: parent
        onClicked: Qt.quit()
    }
}

当我点击按钮时,在命令提示符下运行代码给我一个错误:

Signal QQmlEngine::quit() emitted, but no receivers connected to handle it.

在网上搜索时,我意识到其他人也有类似的问题,因为 Qt 的新语法。但都是 C++ 的,我看不懂。

有谁知道如何在 Python 中解决这个问题?

【问题讨论】:

    标签: python python-3.x qml pyside2


    【解决方案1】:

    The docs 备注:

    退出()

    此函数导致发出QQmlEngine::quit() 信号。 在Prototyping with qmlscene 内,这会导致启动器 申请退出;退出 C++ 应用程序时此方法 调用,将QQmlEngine::quit() 信号连接到 QCoreApplication::quit() 插槽。

    明确指出必须将QQuickView的QQmlEngine::quit()连接到QCoreApplication::quit():

    import os
    import sys
    
    from PySide2.QtCore import QCoreApplication, Qt, QUrl
    from PySide2.QtGui import QGuiApplication
    from PySide2.QtQuick import QQuickView
    
    if __name__ == "__main__":
        QCoreApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
        app = QGuiApplication(sys.argv)
    
        current_dir = os.path.dirname(os.path.realpath(__file__))
        filename = os.path.join(current_dir, "view.qml")
        view = QQuickView(QUrl.fromLocalFile(filename))
        view.engine().quit.connect(QCoreApplication.quit)  # <---
        view.show()
    
        sys.exit(app.exec_())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-10
      • 2023-01-01
      • 1970-01-01
      相关资源
      最近更新 更多