前言
QCombox
是使用Qt中很常用的一个控件了,但是有时候使用它的信号与槽的时候,总是会报参数不匹配的问题,这是因为QCombox
中的信号有很多重载版本,尤其是我们使用currentIndexChanged
这个信号的时候。
正文
解决办法
方法一
使用Qt 4中SIGNAL
与SLOT
这两个宏,这种方式下,Qt 会自动解析正确的信号和槽。
例如:
connect(ui->comboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(on_ComboxChanged(int)));
方法二
使用QOverload
这个类,QOverload
是 Qt 5 引入的一个工具类,用于解决信号和槽机制中,信号重载(overloaded signals)的问题。
QOverload
的作用
QOverload
可以帮助你指定信号的特定重载,从而消除歧义。
语法:
QOverload<参数类型列表>::of(&类名::信号名)
代码示例:
connect(ui->comboBox,
QOverload<int>::of(&QComboBox::currentIndexChanged),
this,&MainWindow::on_ComboxChanged);
总结
QOverload
是解决信号重载歧义问题的关键工具,它可以帮助在基于函数指针的新信号槽连接语法中明确选择正确的重载信号。