Qt入门(三)

Qt中的信号和槽

  • 信号槽的优点:松散耦合;信号的发送端和接收端本身是没有关联的,通过connect连接起来
  • 连接方式:connect
  • 参数:
    • 参数1:信号的发送者
    • 参数2:发送的信号(函数的地址)
    • 参数3:信号的接收者
    • 参数4:处理的槽函数(函数的地址)
    • connect(btn, &QPushButton::click, this, &QWidget::close)
  • 松散耦合
  • 自定义的信号和槽:
    • 自定义信号:写到signals下,返回值类型为void;需要声明,不需要实现;可以有参数,可以重载
    • 自定义槽函数,返回值类型为void;需要声明,也需要实现;可以有参数,可以重载;写到public slots下或者public或者全局函数下
  • 触发自定义的信号:emit
  • 当自定义的信号和槽出现重载:
    • 需要利用函数指针明确地指向函数的地址
    • void(Teacher:: *teacherSignal)(QString) = &Teacher::hungry;
    • QString转成char*:先转为QByteArray(.toUtf8()),再转为char*(.data())。

函数指针及其用法:http://c.biancheng.net/view/228.html

  • 信号可以连接信号
  • 断开连接 disconnect
  • 一个信号可以连接多个槽函数
  • 多个信号可以连接同一个槽函数
  • 信号和槽函数的参数必须类型一一对应
  • 信号的参数个数可以多于槽的参数个数
  • Qt4版本以前的信号和槽连接方式
    • connect(teacher,SIGNAL(hungry()),student,SLOT(treat()));
    • Qt4版本优点:参数直观;缺点:类型不做检测

猜你喜欢

转载自blog.csdn.net/mugeit/article/details/111120720