在 Python 中的布局(或 QWidget)中嵌入 QQuickWidget
Embedding a QQuickWidget in a Layout (or in a QWidget) in Python
我使用 Python 和 Pyside2,我尝试在 Qwidget 或 Layout 中插入 QQuickWidget,但我没有找到解决方案。
我尝试使用此代码:
view = QQuickWidget()
view.setSource(QUrl.fromLocalFile("main.qml"))
但 QQuickWidget 在另一个 windows 中启动。
我尝试使用:
Layout.addWidget(view)
但它需要 QWidget,并且不能与 QQuickWidget 一起使用。
我发现了这个类似的问题(在 C 中),但它在 Python 中不起作用:
Adding QQuickWidget in QStackedWidget
我试过QQmlApplicationEngine和QQuickView,但是有一些问题。
你能帮帮我吗?
编辑:
main.qml 文件是:
import QtQuick 2.0
import QtQuick.Window 2.0
import QtLocation 5.6
import QtPositioning 5.6
Window {
width: 300
height: 300
visible: true
Plugin {
id: mapPlugin
name: "esri"
}
Map {
anchors.fill: parent
plugin: mapPlugin
center: QtPositioning.coordinate(39.2160, 9.1344)
zoomLevel: 16
}
}
问题是根元素是一个Window会创建一个window,解决方法是使用一个Item:
import QtQuick 2.0
import QtLocation 5.6
import QtPositioning 5.6
Item {
width: 300
height: 300
Plugin {
id: mapPlugin
name: "esri"
}
Map {
anchors.fill: parent
plugin: mapPlugin
center: QtPositioning.coordinate(39.2160, 9.1344)
zoomLevel: 16
}
}
我使用 Python 和 Pyside2,我尝试在 Qwidget 或 Layout 中插入 QQuickWidget,但我没有找到解决方案。 我尝试使用此代码:
view = QQuickWidget()
view.setSource(QUrl.fromLocalFile("main.qml"))
但 QQuickWidget 在另一个 windows 中启动。 我尝试使用:
Layout.addWidget(view)
但它需要 QWidget,并且不能与 QQuickWidget 一起使用。 我发现了这个类似的问题(在 C 中),但它在 Python 中不起作用: Adding QQuickWidget in QStackedWidget
我试过QQmlApplicationEngine和QQuickView,但是有一些问题。
你能帮帮我吗?
编辑: main.qml 文件是:
import QtQuick 2.0
import QtQuick.Window 2.0
import QtLocation 5.6
import QtPositioning 5.6
Window {
width: 300
height: 300
visible: true
Plugin {
id: mapPlugin
name: "esri"
}
Map {
anchors.fill: parent
plugin: mapPlugin
center: QtPositioning.coordinate(39.2160, 9.1344)
zoomLevel: 16
}
}
问题是根元素是一个Window会创建一个window,解决方法是使用一个Item:
import QtQuick 2.0
import QtLocation 5.6
import QtPositioning 5.6
Item {
width: 300
height: 300
Plugin {
id: mapPlugin
name: "esri"
}
Map {
anchors.fill: parent
plugin: mapPlugin
center: QtPositioning.coordinate(39.2160, 9.1344)
zoomLevel: 16
}
}