QT 控制台信号与槽简例

要点:
1、要注意末尾的 #include "main.moc",否则编译报错
2、槽函数可以为实例成员函数
3、槽函数可以为静态成员函数
4、槽函数可以为lamda函数
5、一个信号可以连接多个槽函数
6、一个槽函数也可以被多个信号连接

#include <QCoreApplication>
#include <QDebug>

class F: public QObject
{
    Q_OBJECT
public:
    void myslot(int para)
    {
        qDebug()<<"my slot:"<<para<<endl;
    }
    static void myslot2(int para)
    {
        qDebug()<<"my slot2:"<<para<<endl;
    }
signals:
    void mysig(int);
};

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    F *aaa = new F();
    QObject::connect(aaa, &F::mysig, aaa, &F::myslot);
    QObject::connect(aaa, &F::mysig, [](int x){
        qDebug()<<"my lamda:"<< x << endl;
    });
    QObject::connect(aaa, &F::mysig, &F::myslot2);
    emit aaa->mysig(3);
    return a.exec();
}

#include "main.moc"

posted @ 2024-08-13 21:52  坚持梦想的蜗牛  阅读(17)  评论(0编辑  收藏  举报