Qt第五十三章:Qt Design Studio导出项目到python中使用

 

目录

一、导出QRC文件(导出到qt design studio项目的根目录,因为接下来要转换成py文件)

二、将QRC转换成py文件

三、将转换后的py文件复制到python项目中使用 

四、python调用QRC示例

五、可能出现的问题


一、导出QRC文件(导出到qt design studio项目的根目录,因为接下来要转换成py文件)

全部选中

二、将QRC转换成py文件

三、将转换后的py文件复制到python项目中使用 

四、python调用QRC示例

import sys

from PySide6.QtCore import QObject, Slot
from PySide6.QtQml import QQmlApplicationEngine
from PySide6.QtQuick import QQuickItem
from PySide6.QtWidgets import QApplication
import test_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__':
    import test_rc
    app = QApplication([])
    quick_widget = LoginQuickWidget()
    app.exec()

五、可能出现的问题

 ①qml文件中无法import自定义模块

解决办法一:如果没有必要用模块,将相应的无法import的语句删除掉,然后再重新转换成py文件。
解决办法二:import qcr中的路径。比如上图中:无法直接import UnitiledProject,那就直接import此模块在qrc中的路径:

 

 ②qml文件中无法import系统模块

 

查看虚拟一下环境发现确实没有该模块。 但是我们在Qt Design Studio确实能够正常运行,所以在Qt Design Studio中必然有相应的包存在,我们直接去搞一份过来即可。具体操作如下:

 

(提示:上图中博主缺少的包:QtQuick.Studio.Application属于编辑器打包相关的包,所以即使复制过来,还是会报错,这种就属于没有必要导入的包,删除相应的import即可) 

③找不到相应的变量 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文子阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值