举一个例子,多个QComboBox控件的currentIndexChanged信号绑定同一个槽函数,在槽函数中怎么区分信号是哪一个控件发生的,这里不是按钮,所以用不了按钮组那种方式来辨别控件,解决方式:
1,使用sender()
函数来获取发出信号的对象的指针
2,使用qobject_cast<QComboBox*>(sender())获取对应的QComboBox控件指针
这样就区分开来了,示例:
const QStringList CenStaComboxs =
{"CenSta11_combox2","CenSta12_combox2","CenSta13_combox2","CenSta14_combox2",
"CenSta21_combox2","CenSta22_combox2","CenSta23_combox2","CenSta24_combox2"};
foreach (QString csc, CenStaComboxs) {
QComboBox *cbbTemp = this->findChild<QComboBox *>(csc);
connect(cbbTemp, QOverload<int>::of(&QComboBox::currentIndexChanged),this,
&MainWindow::on_CenStaXX_combox2_currentIndexChanged);
}
//槽函数
void MainWindow::on_CenStaXX_combox2_currentIndexChanged(int index)
{
QComboBox* comboBox = qobject_cast<QComboBox*>(sender());
qDebug()<<comboBox -> objectName();
}
其他类型的控件类似处理,qobject_cast<[控件类型]>(sender())。