这个关键字实际上是 Q_SIGNALS 宏,是 Qt 项目专用的,并不是 C++ 的标准关键字。来,咱们试一试,分别实例化 SomeObj 和 SlotsObj 类,然后让 SaySomething 信号依次与 slot1、slot2、slot3 建立连接。
自定义缺乏的信号和槽函数,借助 Qt 的元对象系统和内省机制,在创建类时添加 Q_OBJECT 宏,使用 signals:/slots: 标记添加自定义的信号 / 槽函数,使用时通过 emit 发送信号,用 connect 函数连接信号和槽。这是事件机制中最基本的函数,所有的事件发送最终都要调用这个函数。
#23 和 #24 将两个控件加入布局管理器 layout 中, #26 在窗体部件上安装布局管理器 layout,此时 QHBoxLayout 以及它包含的 QSpinBox 和 QSlider 会自动 “重新定义” 父窗口,QWidget 会取得它们的所有权,这也是它们在创建时没有设置父窗口的原因;