I wrote a simple hello world using pyqt5. But when I start, I get the error:
QQuickView only supports loading of root objects that derive from QQuickItem.
If your example is using QML 2, (such as qmlscene) and the .qml file you
loaded has 'import QtQuick 1.0' or 'import Qt 4.7', this error will occur.
To load files with 'import QtQuick 1.0' or 'import Qt 4.7', use the
QDeclarativeView class in the Qt Quick 1 module.
I tried to solve this problem, but I think I do not understand what is happening. Can someone explain this error to me in more detail and how to solve it?
Main.py:
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.Qt import *
from PyQt5.QtQuick import *
if __name__=='__main__':
import os
import sys
class Main(QObject):
def __init__(self,parent=None):
super().__init__(parent)
self.view=QQuickView()
self.view.setSource(QUrl.fromLocalFile('main.qml'))
def show(self):
self.view.show()
app=QApplication(sys.argv)
main=Main()
main.show()
sys.exit(app.exec_())
Main.qml
import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Window 2.0
ApplicationWindow
{
signal btnPlayClicked()
signal btnStopClicked()
id:app
width:Screen.desktopAvailableWidth
height:Screen.desktopAvailableHeight
color:"black"
ToolBar{
y:app.height-height
height:btnPlay.height
Button
{
id:btnPlay
x:app.width/2-btnPlay.width
text:"Play"
onClicked: parent.parent.btnPlayClicked()
}
Button
{
id:btnStop
x:app.width/2
text:"Stop"
onClicked: parent.parent.btnStopClicked()
}
}
}
source
share