Qt带参数信号
信号也可以重载
但是connect是会发生二义性,编译器不知道要处理哪个信号,因为我发出的信号是有参和一个无参的
signal:
void mySignals();
void mySignals(int,QString);
emit:
emit mySignals(120,"我是小窗口");
emit mySignals();
connect:
//处理无参信号
connect(&t,TowWindow::mySignals,this,&MainWindow::gotomain);
//处理有参信号
connect(&t,TowWindow::mySignals,this,&MainWindow::gotomain);
解决这个二义性问题可以用函数指针指向无参或有参信号
信号本来就是一个函数
void (TowWindow::*a_signal)() = &TowWindow::mySignals;
给函数指针命名时要注意加上一个作用域,表示这个函数是属于TowWindow类的
指向的信号当然更要加上作用域,因为这个信号在TowWindow类里
带参数:
void (TowWindow::*b_signal)(int,QString) = &TowWindow::mySignals;
connect:
void (TowWindow::*a_signal)() = &TowWindow::mySignals;
connect(&t,a_signal,this,&MainWindow::prin);
void (TowWindow::*b_signal)(int,QString) = &TowWindow::mySignals;
connect(&t,b_signal,this,&MainWindow::gotomain);