Qt信号槽是框架提供的通信机制,需继承QObject并使用Q_OBJECT宏;信号用signals声明、无返回值、只能emit触发,槽为普通成员函数;通过connect连接,推荐新语法以保障类型安全。

Qt 的信号和槽机制不是 C++ 语言原生特性,而是 Qt 框架提供的对象间通信方式。它通过元对象系统(Meta-Object System)实现,需要继承 QObject 或其子类,并配合 Q_OBJECT 宏使用。
信号和槽的基本写法
信号用 signals: 关键字声明,是特殊的 void 成员函数,不能有返回值、不能被直接调用(只能用 emit 触发)。槽是普通成员函数,可以是 public、protected 或 private,可被直接调用,也可响应信号。
连接用 QObject::connect(),语法简洁:
-
connect(sender, &Sender::signalName, receiver, &Receiver::slotName);(推荐,编译期检查) - 旧式写法:
connect(sender, SIGNAL(signalName()), receiver, SLOT(slotName()));(已不推荐,无类型安全)
一个完整的小例子
比如按钮点击后更新标签文字:
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~