文章目录
概述
这个内容是QT独有的,写的挺有意义的。之前写过一篇QT slots的函数,思来想去,觉得不是那么有趣。就决定要重新写一篇文章来聊下。
先说下槽和信号量。
用系统生成
如下图所示:
选中一个qpushbutton,然后右键转到槽,
选中clicked函数,如下图:
自己生成了一个函数在cpp文件中。
新增一个信号量和槽
如下图所示:
在这个地方可以新增一个信号量和槽,然后选中发送者,接收者,信号,槽就可以了。
代码方式
信号量和槽的宏
信号量和槽都用函数地址
cpp
connect(ui->pushButton_3, &QPushButton::clicked, this, &MainWindow::on_pushButton_clicked0);
lamda表达式
cpp
connect(ui->pushButton_3, &QPushButton::clicked, this, [=](){
printf("lamda 0\n");
});
再看一个,如下:
cpp
connect(ui->pushButton_4, &QPushButton::clicked, this, [=](){
emit customSlot();
});
connect(this, &MainWindow::sig_push_btn4, this, &MainWindow::customSlot);
这个是自定义了槽和信号量。
函数指针
cpp
void (MainWindow::*CustomSlot7)() = &MainWindow::customSlot1;
connect(ui->pushButton_5, &QPushButton::clicked, this, CustomSlot7);
这个是函数指针的调用。
槽和信号量函数
信号量
信号量只用声明就可以了。
槽
槽函数声明,实现都要有。
小结
这篇主要写了qt槽函数的几种调用方式,涉及到发送者,接收者,槽,信号量。这种方式有点像设计模式的观察者模式,感兴趣可以参考之前的文章观察者设计模式。至于qt的调用,再加上c++自有的可调用对象(可以参考C++可调用对象),就有多种使用方式了。感兴趣一起学习学习,可以一起。OK,翻篇。