我使用pyqt5编写了简单的hello world程序。但是当我启动它时,会出现错误:
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.
我试图解决它,但我想我不明白发生了什么。有人能详细解释一下这个错误吗?我应该如何解决它?
Main.py:
#!/usr/bin/python3.4
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()
}
}
}