C++如何使用信号和槽(Signal & Slot)?(Qt框架示例)

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

C++如何使用信号和槽(Signal & Slot)?(Qt框架示例)-第1张图片-佛山资讯网

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()));(已不推荐,无类型安全)

一个完整的小例子

比如按钮点击后更新标签文字:

标签: ai c++ win 隐式转换

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~