目录
一、Qt Design Studio
二、导出所有文件到QRC(不要改动默认的QRC文件名称)
三、QRC转换成py
1.删除Constants.qml中的
2.将App.qml和Screen01.qml中的
3.转换
4、将QRC文件和转换后的py文件,复制到python项目中使用。
一、Qt Design Studio
二、导出所有文件到QRC(不要改动默认的QRC文件名称)
三、QRC转换成py
将导包换成导入qrc资源:
1.删除Constants.qml中的
import QtQuick.Studio.Application
property StudioApplication application: StudioApplication { fontPath: Qt.resolvedUrl("../../content/" + relativeFontDirectory) }
2.将App.qml和Screen01.qml中的
import UntitledProject换成下面(注意:冒号前的qrc不能少,用英文单引号包起来)
import 'qrc:/imports/UntitledProject'
3.转换
4、将QRC文件和转换后的py文件,复制到python项目中使用。
import sys
from PySide6.QtCore import QObject, Slot
from PySide6.QtQml import QQmlApplicationEngine
from PySide6.QtQuick import QQuickItem
from PySide6.QtWidgets import QApplication
import UntitledProject_rc
# 槽函数类(一个承载槽函数的容器类)
class Slots(QObject):
def __init__(self, objects):
self.objects = objects
super().__init__()
@Slot(str, result=None)
def set_text_msg(self, msg):
# 获取qml中的Text对象
child = self.objects[0].findChild(QQuickItem, "text1")
# 获取对象属性
p = child.property("text")
# 设置对象属性
child.setProperty("text", p + msg)
@Slot(result=str)
def get_text_msg(self):
return "皎氯"
"""
这种方式是以Qml作为窗口来使用。所有的逻辑UI都由Qml来完成。python提供可以调用数据的API即可。
"""
class LoginQuickWidget:
def __init__(self):
# 初始化UI
self.engine = QQmlApplicationEngine()
# 加载qml文件
self.engine.load(u":/content/App.qml")
if not self.engine.rootObjects():
sys.exit(-1)
# qml对象集合
objects = self.engine.rootObjects()
# 实例化槽函数
self.slots = Slots(objects)
# 注入槽函数
self.engine.rootContext().setContextProperty('slots', self.slots)
if __name__ == '__main__':
app = QApplication([])
quick_widget = LoginQuickWidget()
app.exec()