您的位置:首页 > 财经 > 金融 > 宁波seo营销推广_免费ppt模板下载第一ppt_重庆今日头条新闻消息_如何让网站快速收录

宁波seo营销推广_免费ppt模板下载第一ppt_重庆今日头条新闻消息_如何让网站快速收录

2025/1/18 7:23:19 来源:https://blog.csdn.net/qq_15409121/article/details/144539917  浏览:    关键词:宁波seo营销推广_免费ppt模板下载第一ppt_重庆今日头条新闻消息_如何让网站快速收录
宁波seo营销推广_免费ppt模板下载第一ppt_重庆今日头条新闻消息_如何让网站快速收录

QT实战经验总结

  • 在看书系统学习后,就开始实战了,会遇到很多问题
    • 1.信号和槽的思考
    • 2.在python 或 C++ 代码中,对 QML 代码中控件的调用

在看书系统学习后,就开始实战了,会遇到很多问题

python案例

1.信号和槽的思考

当我练习简单的信号和槽的时候,只是 print 一些文字,所以我的槽函数没有封装到类中。但是当我做一些复杂操作时,我发现就得用类来封装起来。这里就涉及一个 engine.rootContext().setContextProperty("backend", backend)

  • rootContext().setContextProperty(“backend”,backend)
    作用是让 backend 这个类,可以在 QML 中调用,因为类定义是在 python 中写的

2.在python 或 C++ 代码中,对 QML 代码中控件的调用

刚开始写QT的时候,我就遇到这个问题
我在写后端逻辑时,会涉及到对前端 QML 控件的调用。
比如,我点击按钮,改变按钮或其他控件的属性。

这里需要用到的就是 engin.rootobject()[0].findChild(Object,"name")
engin 是用 python 时通过 QQmlApplicationEngine() 创造的对象。

  • rootObject()[0] 获取到根控件,就是 Window 控件(我以为它是以树形展开获取,但是我测试发现只能获取到根控件,就只有这一个)
  • findChild(Object,“name”) 就是从根控件 Window 找名为 name 的子控件。
//通过点击按钮来改变该按钮的文本
//只用函数实现不了,必须通过类才可以
//要注意的是代码都是写在 sys.exit(app.exec()) 前面的
from PySide6.QtGui import QGuiApplication
from PySide6.QtQml import QQmlApplicationEngine
from PySide6.QtCore import QObject, Slot
import sys
class Backend(QObject):def __init__(self, root_object, parent=None):super().__init__(parent)self.root_object = root_object@Slot()def say_hello(self):my_button = root_object.findChild(QObject, "myButton")if my_button:print("aaa",my_button.objectName())my_button.setProperty("text","bbb")
if __name__ == "__main__":app = QGuiApplication([])engine = QQmlApplicationEngine()  engine.load("qml/main.qml")if not engine.rootObjects():sys.exit(-1)root_object = engine.rootObjects()[0]backend = Backend(root_object)engine.rootContext().setContextProperty("backend", backend)sys.exit(app.exec())

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com