业余时间接的小项目,基于python和qt开发的的智能园区系统;因为个人之前qt不是太了解,所以这次借着这个机会进行学习,在这里也做好记录,也分享给大家,共同进步!
此项目主要基于python3.10,pyqt6和yolo进行开发的,先上效果图
Qt 的 信号与槽(Signal-Slot) 是其核心特性之一,用于对象间的通信。它提供了一种解耦的方式,让对象可以互相通知并响应事件,而不需要直接引用对方。信号与槽机制是 Qt 相较于传统回调函数的一大优势。
基本概念
-
信号(Signal)
信号是由对象发出的通知,通常用于表明某种状态的改变或事件的发生。信号不会直接实现功能,也不会自己调用,只是一个声明。 -
槽(Slot)
槽是一个普通的函数,可以连接到一个信号。当信号发出时,连接到该信号的槽会自动被调用。
主要特点
- 解耦设计:信号与槽允许对象间通信,而无需它们直接依赖于对方。
- 多对多连接:
- 一个信号可以连接到多个槽。
- 一个槽可以连接到多个信号。
- 线程安全:信号与槽可以用于跨线程通信,Qt 会在不同线程间自动切换上下文。
实现机制
Qt 的信号与槽基于 元对象系统(Meta-Object System),需要使用 Qt 的 moc
工具生成辅助代码。核心原理包括:
- 信号是一个特定的函数:Qt 会将信号转换为一个字符串,存储在对象的元信息中。
- 槽是普通的成员函数:使用特定的宏定义可以使槽与信号连接。
- 事件触发:当信号发出时,Qt 的元对象系统会找到所有连接的槽并调用它们。
github链接,希望大家使用的时候记得给个star 感谢la@@@@@!!!!
GitHub - BarryLoveBerry/qt_with_yolo: 业余时间接的小项目,基于qt,开发界面,获取rtsp视频流,并将yolo检测结果显示和分析