Linux信号Signal基础是一种系统内部的通知机制。进程间通信通过信号类别告诉执行哪个进程~笼统概念信号源发出信号的对象是谁信号的类型那种类别的信号信号的处理方式注册信号处理函数实现特定功能信号被触发的时候自动调用执行具体概念信号源具体哪个控件发出的信号信号的类型单击、滑动、勾选勾选框及选择下拉框等……信号的处理方式具体根据注册函数实现~槽Slot槽就是信号的处理方式。槽 —— 功能函数 。 // 可很形象地理解为“槽盛纳信号”槽运输着信号到特定的地方(栈帧)发挥工作。connect(发送者对象, 发送者所处的类::信号类型, 接收者, 接收者::槽);单击循环交互点击就实现hello world!与world hello!!按钮文本的不断交互setText();设置文本text();返回文本内容前言极大体现了框架能力于不同.cpp与.h和main.c文件的配合。Ⅰwidget.cpp内构建QPushButton对象button由上文得知需要连接this。QPushButton* button new QPushButton(this);//链接☆☆☆Ⅱbutton对象的文本设置与connect处理点击操作button-setText(hello world!); connect(button, QPushButton::clicked, this, Widget::handleClick); // 发送者 信号所属的类 单击信号 接受者 定义在Widget类内的 // QPushButton* 槽函数指针 槽函数指针 // 类型ⅢhandleClick定义我们发现假若button定义在构造函数内那我们无法在handleClick函数内调用。思路一采用函数传参的方式传递参数button但是我们发现若传递参数会出现在connect函数内无法为其提供正确格式的参数的结果(会转为函数调用目的是传递函数指针)。 因此思路一舍弃思路二将button转为成员变量。函数定义在类内均可访问类内成员思路合理。//Widget.cpp Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) , _button(new QPushButton(this))//变成员变量相关 { ui-setupUi(this); //因为成员变量的引入 无需创建 QPushButton* button new QPushButton(this);//链接 _button-setText(hello world!); connect(_button, QPushButton::clicked, this, Widget::handleClick); //为解决button的传递问题变成成员变量 }void Widget::handleClick();定义运行使用函数指针时为什么要加?先摆明结论// 普通函数 void normalFunction() { } void test() { auto ptr1 normalFunction; // ✅ 可以省略 函数名自动转换为指针 auto ptr2 normalFunction; // ✅ 显式加 也可以 } // 成员函数 class MyClass { public: void memberFunction() { } }; void test() { // ❌ 错误成员函数名不能隐式转换为指针 auto ptr MyClass::memberFunction; // 编译错误 // ✅ 必须使用 显式取地址 auto ptr MyClass::memberFunction; // 正确 }C规定普通函数函数名可以隐式类型转换为函数指针。成员函数函数名不能隐式类型转换为成员函数指针必须显示使用。原因成员函数需要绑定到this指针类型比普通函数更复杂。信号和槽是qt中的基础链接关系它实现了从用户到界面GUI的交互是qt学习中的里程碑相应技术更是qt整体的重中之重。感谢观看莫辜负ᕦ(ㅂ)ᕤ