例如给这个open菜单添加点击监听回调。
再此之前,先说一下qt的事件通信机制。
大多数框架对于事件的处理是采用发布订阅Subscribe/Publish模式,即把事件名和相应的回调函数注册到监听者列表中。通过操作事件分发者(EventDispatcher)来调度事件。
qt的信号-槽机制,类似观察者模式(Observer),组件把自己注册为观察者后,会监测程序运行中不断发出的信号流,若发现有与之匹配的信号后,则立即做出相应反应。
这两种方式比较,前者灵活,后者性能更强。
回到正题:
在设计好界面后,代码中会自动添加一个openAction(菜单名+Action)的QAction对象。(这个对象声明在ui_mainwindow.h里, qtcreator默认屏蔽此文件)
接下来,按照观察者模式的规则,在构造函数里把自身注册为一个观察者。
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->acti