QT 中 Mainwindow 菜单的使用和触发
在创建一个新的QT设计师类后,选择默认的Mainwindow模板,在Mainwindow.ui中,可以发现左上角有菜单选项,输入控件名字和对象名,一个菜单控件就创建成功了。
当创建完成后,我们想要对菜单控件进行操作,就需要利用到QT中的SIGNAL\SLOT机制,与按键不同的是,在UI界面中构建好菜单后,程序会自动在ui.h中完成信号函数的声明,它们同一被命名为
void triggered(bool checked = false);
有了信号以后,槽需要我们自己去声明和定义想要进行的操作,使用connect函数将信号和槽连接。需要注意的是,信号函数和槽函数的参数类型必须一致。
connect(ui->菜单名,SIGNAL(triggered(bool)),this,SLOT()));
Connect函数
connect是QT中最常用的函数之一,是将信号和槽连接起来的桥梁。connect用法很简单,函数原型为:
static QMetaObject::Connection connect(const QObject *sender, const char *signal,const QObject *receiver, const char *member, Qt::ConnectionType = Qt::AutoConnection);
参数说明:
第一个参数是发射信号的对象;
第二个参数为信号函数;
第三个参数为槽的对象;
第四个参数为槽函数;
当发射信号和槽函数处于同一个类时,槽对象可以使用this指针,而this指针作为参数时则可以省略不写。槽函数也可以为另一个信号函数,从而实现信号与信号的互联。对于信号与槽,必须使用SIGNAL()和SLOT()宏,它们将参数转化为const char *类型。
回到菜单控制
当连接成功后,菜单就可以响应使用了,因为菜单的响应函数是Bool型,所以对应的槽函数也必须是Bool型,如果想在菜单上实现其他操作,需要用一个中介函数来转发。