qml调用python_pyside2qml如何引用另一个QML文件中的QML文件作为组件?
我在同一个文件夹里有3个文件:在表单.py在from __future__ import print_functionimport sys, osfrom PySide2.QtCore import QFile, QObject, QUrlfrom PySide2.QtGui import QGuiApplicationfrom PySide2.QtQuick import QQuickViewi
我在同一个文件夹里有3个文件:
在表单.py在from __future__ import print_function
import sys, os
from PySide2.QtCore import QFile, QObject, QUrl
from PySide2.QtGui import QGuiApplication
from PySide2.QtQuick import QQuickView
if __name__ == '__main__':
app = QGuiApplication(sys.argv)
view = QQuickView()
view.setResizeMode(QQuickView.SizeRootObjectToView)
qmlFile = os.path.join(os.path.dirname(__file__), 'Main.qml')
view.setSource(QUrl.fromLocalFile(os.path.abspath(qmlFile)))
if view.status() == QQuickView.Error:
sys.exit(-1)
view.show()
app.exec_()
del view
在主.qml在
^{pr2}$
在我的代表.qml在import QtQuick 2.10
Component {
id: myDelegate
Text { text: type + ", " + age }
}
运行表单.py应该给我一个包含ListView和两个元素的窗口。这段代码取自official tutorial并进行了更改,这样我就可以看到在其他QML文件中引用QML文件是如何工作的。我得到的只是一个白色窗口,所以我猜委托不会被Main.qml加载。在
MyDelegate.qml的第一个字母是大写的,因此Main.qml应该自动加载委托。我期待这种行为,因为它是问题的解决方案:Include another QML file from a QML file
在许多教程中,包括PyQt5的一些教程,我看到它们引用了其他QML文件。
如果我将Component {...}部分复制到Main.qml中,并将ListView {...}中的委托引用从MyDelegate更改为{},它就可以工作了。在
这个问题出现在任何QML节点,我想外包到一个单独的文件。在
PySide2不支持这个特性吗,或者我必须在form.py中做一些魔术,让Main.qml知道还有另一个QML文件要加载吗?在
我安装了当前的轮子pip install --index-url=http://download.qt.io/snapshots/ci/pyside/5.11/latest/ pyside2 --trusted-host download.qt.io
从安装了python3.6的64位计算机上的official wiki。在
更多推荐
所有评论(0)