QQuickView未出现在.ui GUI中(使用PySide2)

问题描述 投票:0回答:1

当前正在使用一个Python程序,该程序使用来自.ui文件的Qt窗口小部件以显示可交互的GUI。但是,我还没有找到一种集成QQuickview小部件以显示任何QML代码的方法,我已经读过了。

我正在使用PySide2从Qt Designer转换.ui文件,并且都尝试使用Qt Designer中的QQuickWidget,并且手动将QQuickView添加到.ui中的gridLayout失败。

据我所知,我在Qt Designer中添加的QQuickWidget在python中运行时已转换为QWidget,因此setSource(QUrl)或.load(QUrl)在运行代码时毫无意义。

我添加QQuickView的尝试:

    def connect_map_click(self):
        # Function for handling the connect map button
        engine = QQuickView()
        ctx = engine.rootContext()
        url = QUrl.fromLocalFile('QMLtest.qml')
        engine.setSource(url)
        container = QWidget.createWindowContainer(engine, self)
        container.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        engine.show()
        self.window.grd_map.addWidget(container, 0, 0)

QML文件:

import QtQuick 2.7
Rectangle {
    id: rectangle
    color: "red"
    width: 200
    height: 200
    visible: true
    Text {
        id:text
        text: "It's working!"
    }
}

我正在尝试运行屏幕右侧的qml窗口,如下所示。GUI where i'm attempting to add the QQuickView

python qt qml pyside2 qquickview
1个回答
0
投票

我自己解决了这个问题,因为有人往往会在寻求帮助后立即采取行动。

最终发现我之前没有将QQuickWidget导入到Python文件中。因此,我的解决方案最终是在python中创建QQuickWidget,将源设置为qml文件,然后将其添加到.ui GUI中的网格中。

    def connect_map_click(self):
        # Function for handling the connect map button

        qml_widget = QtQuickWidgets.QQuickWidget()
        qml_widget.setSource(QUrl('QMLtest.qml'))
        self.window.grd_map.addWidget(qml_widget)

结果GUI:Working QML in GUI from .ui file

© www.soinside.com 2019 - 2024. All rights reserved.