【置顶】QT的知识点以及代码汇总整理

1 基础知识点

QT介绍_Warning1998的博客-CSDN博客

 1.1 事件

  • Qt是以事件驱动的UI工具集;
  • Qt中,事件被封装成一个个对象,所有的事件均继承自抽象类QEvent
  • 产生事件:
    •  来自外部,例如鼠标,键盘(QMouseEvent和QKeyEvent),这些事件来自底层操作系统,通过异步的方式通知Qt事件处理系统
    • 来自内部,例如定时器(QTimerEvent)
    • 来自用户,例如用户自己编写的程序
  •  接收处理事件:QObject
    •  QObject类是QT对象模型的核心
    • 事件处理机制是QObject的三大职责之一(内存管理,内省(intropection)与事件处理)
    • 任何一个想要接收并处理事件的对象都需要继承自QObject
    • 可以选择重载QObject:event()函数,或者将事件的处理权交个父类
  • 分发事件:
    •   no-GUI的Qt程序:QCoreApplication。QCoreApplication负责将QEvent分发给QObject的子类
    • GUI的Qt程序:QApplication

1.2 信号与槽

  • 观察者模式(发布-订阅(Publish/Subscribe)模式),行为对象模式,依赖关系(1:n),主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。
基本格式:
connect(发出信号的对象,发出的信号,接收信号的对象,接收到信号之后需要调用的函数(槽函数))
connect(sender, signal(信号), receiver, slot(槽));
  • 信号:当某一事件发生后,则发出一个信号(signal)
    • 展示方式:函数
  • 槽函数:槽函数可以与信号关联,当信号被映射时,关联的柄函数被自动执行处理,同步
    • 依赖关系:n:n
  • 优点:类型安全、松散耦合
    • 一个类若要支持信号和槽,则必须从QObject或QOject子类继承
    • 当一个类被继承时,该类信号的槽也同时被继承,也可以根据需要自己定义信号和槽
    • Qt和信号和槽机制不支持对模板的使用
  • 缺点:效率低
    • 一般情况,通过传递一个信号来调用槽函数将会比直接调用非虚函数运行慢10倍
    • 原因:多线程的时候,信号需要排队等待;编组/解组传递的参数;安全地遍历所有的关联;需要定位接受信号的对象

1.2  信号与事件的区别

2 多线程实现

2.1 使用QThread类创建线程

        2.1.1 实例化QThread

        2.1.2 继承QThread

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值