Почему QObject :: sender () возвращает null с QSignalMapper? - PullRequest
2 голосов
/ 16 октября 2019

Я использую 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++;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...