信号重载
说明:
信号是可以重载的,相同的名字不同的参数,在发射信号的时候给值:
emit musicSignal(100,"音乐菜单");
主窗口.h:
创建一个带参的槽来处理信号,注意槽的参数要与信号一致。
void dealMusic2(int ,QString);
主窗口.cpp:
我要让其在点击该按钮的时候在应用程序输出的时候讲传递的参数打印出来。
void MainWidget::dealMusic2(int a, QString str)
{
qDebug() << a <<str.toUtf8().data();
}
connect连接:
注意这里的书写方式,由于是重载的信号,为了防止出现二义性,这里用到了函数指针。
//点击按钮切换窗口
void(musicMenu::*funSignal)() = &musicMenu::musicSignal;
connect(&M,funSignal,this,&MainWidget::changeWin);
//执行第二个带参信号,打印出来
void(musicMenu::*testSignal)(int,QString) = &musicMenu::musicSignal;
connect(&M,testSignal,this,&MainWidget::dealMusic2);
本章知识点
1.信号可以重载,但是书写槽函数的时候所传递的参数类型必须一致。
2.Qt的打印是用 qDebug() ,它的用法与C++的cout用法一致,不过要注意后边的括号必须要加上。使用qDebug()打印的时候需要添加头文件:
#include <QDebug>
3.打印汉字需要转换一下:
qDebug() << a <<str.toUtf8().data();
4.connect连接需要用函数指针将带参和没有参数的信号分别接收分别处理。