【问题标题】:How to connect multiple QML files to backend PySide2如何将多个 QML 文件连接到后端 PySide2
【发布时间】:2021-08-16 17:52:22
【问题描述】:

我正在使用 QtQuick 和 PySide2 构建一个带有 Python 和 QML 的应用程序。我的应用程序中有多个需要与后端通信的 QML 文件。我目前只连接了我的主 QML 文件。

在我的主 QML 文件中,我设置了连接:

Connections{
    target: con
}

Python 代码:

class MainWindow(QObject):

    def __init__(self):
        QObject.__init__(self)
    .
    .
    .

if __name__ == "__main__":
    app = QGuiApplication(sys.argv)
    engine = QQmlApplicationEngine()
    main = MainWindow()
    engine.load(os.path.join(os.path.dirname(__file__), "qml/main.qml"))
    engine.rootContext().setContextProperty("con", main)

    if not engine.rootObjects():
        sys.exit(-1)
    sys.exit(app.exec_())

为了设置多个与后端通信的 QML 文件,我应该在主函数中做什么?

【问题讨论】:

    标签: python pyqt5 qml pyside2 qt-quick


    【解决方案1】:

    使用setContextProperty() 公开的对象是全局的,也就是说,它们可以在所有 .qml 中访问,因此您必须像在 main.qml 中一样。

    另一方面,建议您在load() 之前使用setContextProperty()

    main = MainWindow()
    engine.rootContext().setContextProperty("con", main)
    
    engine.load(os.path.join(os.path.dirname(__file__), "qml/main.qml"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-09
      • 2018-12-06
      • 1970-01-01
      • 1970-01-01
      • 2019-03-07
      • 2022-01-03
      • 2017-06-10
      • 2021-09-14
      相关资源
      最近更新 更多