QT 练习2:信号和槽

2019-10-09  本文已影响0人  孙掌门

信号和槽


// 写this,扔到对象树中,不用自己释放
    ter = new MyTeacher(this);
    st = new MyStudent(this);
    // 连接
    // 函数指针
    void (MyTeacher:: *teacherSignal)(QString) = &MyTeacher::hungry;
    void (MyStudent:: *studentSlot)(QString) = &MyStudent::eat;
    connect(ter,teacherSignal,st,studentSlot);
//    wantToEat();

    QPushButton *btn = new QPushButton("吃饭",this);
    btn->setParent(this);
    // 信号连接信号
    void (MyTeacher:: *tHungry)(void) = &MyTeacher::hungry;
    void (MyStudent:: *sEat)(void) = &MyStudent::eat;
    // 按钮传递信号给老师,让老师发出饿的信号
    connect(btn,&QPushButton::clicked,ter,tHungry);
    // 老师发送饿的信号给学生,学生处理信号,槽
    connect(ter,tHungry,st,sEat);
    // 信号可以连接信号
    // 信号和槽可以断开
    // 一个信号可以出发多个槽函数
    // 多个信号可以连接同一个槽
    // 信号参数的个数可以多余槽的个数,但是类型必须一一对应,反之不可以。

DEMO

上一篇下一篇

猜你喜欢

热点阅读