Встраивание QQuickWidget в макет (или в QWidget) в Python

1

Я использую Python и Pyside2, я пытаюсь вставить QQuickWidget внутри Qwidget или внутри Layout, но я не нашел решения. Я пытаюсь с этим кодом:

view = QQuickWidget()
view.setSource(QUrl.fromLocalFile("main.qml"))

но QQuickWidget запускается в других окнах. Я пытаюсь использовать:

Layout.addWidget(view)

но он требует QWidget и не работает с QQuickWidget. Я нашел этот похожий вопрос (в C), но он не работает в Python: Добавление QQuickWidget в 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
    }
}
  • 0
    покажи свой main.qml. Я думаю, что причина проблемы в .qml
  • 0
    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 } }
Показать ещё 2 комментария
Теги:
pyside2
qml
qquickwidget

1 ответ

1
Лучший ответ

Проблема в том, что корневым элементом является окно, которое создаст окно, решение состоит в использовании элемента:

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
    }
}
  • 0
    Большой ! Теперь работать. Я чувствую себя так глупо. Большое спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню