Cannot Use Applicationwindow (qml) On Pyside2
I'm trying to run a simple Qt application using QML and more specifically ApplicationWindow. My Python code is a simple QML caller: import sys from PySide2.QtWidgets import QApplic
Solution 1:
First, as pyside returns:
QQuickView does not support using windows as a root item. If you wish to create your root window from QML, consider using QQmlApplicationEngine instead.
This is a working example:
main.py
import sys
fromPySide2.QtWidgetsimport QApplication
fromPySide2.QtCoreimportQt, QCoreApplication
fromPySide2.QtQmlimport QQmlApplicationEngine
if __name__ == '__main__':
app = QApplication(sys.argv)
QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
QCoreApplication.setAttribute(Qt.AA_UseHighDpiPixmaps)
engine = QQmlApplicationEngine('view.qml')
sys.exit(app.exec_())
view.qml
importQtQuick.Controls2.4importQtQuick2.0ApplicationWindow {
title:"Qt Quick Controls Gallery"visible:truewidth:640height:480Rectangle {
width:30height:30color:"blue"
}
}
Solution 2:
If you read the docs:
The
QQuickView
class provides a window for displaying a Qt Quick user interface.
That is, QQuickView
provides a window to show Items, but ApplicationWindow
is already a window so you do not need and should not use QQuickView
anymore, in the case of ApplicationWindow
you must use QQmlApplicationEngine
:
main.py
import sys
from PySide2 import QtCore, QtGui, QtQml
if __name__ == '__main__':
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
app = QtGui.QGuiApplication(sys.argv)
engine = QtQml.QQmlApplicationEngine()
url = QtCore.QUrl.fromLocalFile('view.qml')
engine.load(url)
if not engine.rootObjects():
sys.exit(-1)
sys.exit(app.exec_())
view.qml
import QtQuick 2.7import QtQuick.Controls 2.4
ApplicationWindow {
title: "Qt Quick Controls Gallery"
width: 640
height: 480
visible: true// <---
}
Post a Comment for "Cannot Use Applicationwindow (qml) On Pyside2"