Я использую QSingalMapper для нескольких QSlider и QCheckBox, оба работают нормально. Я хочу проверить источники сигнала в слоте. Но QObject :: sender (); всегда возвращает NULL ;
void MainWindow::UpdateTempValues(int val)
{
QSlider *m_slider = qobject_cast<QSlider*>(QObject::sender());
if(m_slider)
ui->label_34->setText(QString::number(m_slider->value()));
}
QSignalMapper *checkBoxMapper = new QSignalMapper(this);
QList <QSlider *> SliderList = this->findChildren <QSlider *>();
QList <QCheckBox *>CheckBoxList = this->findChildren<QCheckBox *>();
connect(signalMapper, SIGNAL(mapped(int)), this, SLOT(UpdateTempValues(int)));
connect(checkBoxMapper, SIGNAL(mapped(int)), this, SLOT(UpdateInOuConfigRegisters(int)));
foreach(QSlider *w, SliderList) {
signalMapper->setMapping(w,SignalMaperID);
connect(w, SIGNAL(valueChanged(int)), signalMapper, SLOT(map()));
SignalMaperID++;
}
SignalMaperID = 0;
foreach(QCheckBox *c,CheckBoxList){
checkBoxMapper->setMapping(c,SignalMaperID);
connect(c, SIGNAL(stateChanged(int)), checkBoxMapper, SLOT(map()));
SignalMaperID++;
}