当前正在使用一个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!"
}
}
我自己解决了这个问题,因为有人往往会在寻求帮助后立即采取行动。
最终发现我之前没有将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)