void StripToolVariable::setInfo(StripToolVariableInfo *newInfo)
{
    if (info_ != 0) {
        disconnect( info_, SIGNAL(dataSourceValueUpdate(QTime, double)), this, SLOT(onDataSourceValuesChanged(QTime, double)) );
        disconnect( info_, SIGNAL(colorChanged(QString)), this, SLOT(toUpdateSeriesColor(QString)) );

        disconnect( info_, SIGNAL(axisMaxChanged(double)), this, SLOT(setCustomAxisMax(double)) );
        disconnect( info_, SIGNAL(axisMinChanged(double)), this, SLOT(setCustomAxisMin(double)) );
        disconnect( info_, SIGNAL(axisMaxErased()), this, SLOT(eraseCustomAxisMax()) );
        disconnect( info_, SIGNAL(axisMinErased()), this, SLOT(eraseCustomAxisMin()) );

        disconnect( this, SIGNAL(dataMaxUpdated(double)), info_, SIGNAL(dataMaxChanged(double)) );
        disconnect( this, SIGNAL(dataMinUpdated(double)), info_, SIGNAL(dataMinChanged(double)) );

        info_->deleteLater();
        info_ = 0;
    }
Example #2
0
void MainWindow::slotWeatherStationSelected(QString stationId){

    qDebug() << "MainWindow::slotWeatherStationSelected(QString stationId)";

    if(m_radar_station->getStationId() == stationId){
        return;
    }

    disconnect(m_radar_station, SIGNAL(signalRadarProductDownloadDone(RadarType)), this, SLOT(slotDrawRadar()));
    disconnect(ui->pushButtonRefresh, SIGNAL(clicked(bool)), m_radar_station, SLOT(slotRefreshRadarProduct()));

    // Save the currently selected radar type before destruction.
    RadarType rt = m_radar_station->getCurrentRadarProductType();

    m_radar_station->deleteLater();

    m_radar_station = new WeatherStation(stationId, m_radar_settings, this);
    connect(m_radar_station, SIGNAL(signalRadarProductDownloadDone(RadarType)), this, SLOT(slotDrawRadar()));
    connect(ui->pushButtonRefresh, SIGNAL(clicked(bool)), m_radar_station, SLOT(slotRefreshRadarProduct()));

    slotRadarChanged(rt);

    return;
}
void HelperTestQtSigSlotSpeed::runTest()
{
    QThread thread_receiver;
    thread_receiver.start();

    Receiver * r0 = new Receiver();
    r0->moveToThread(&thread_receiver);

    connect(this,SIGNAL(signalThing(Thing)),
            r0,SLOT(OnSignalThing(Thing)));

    connect(this,SIGNAL(signalStopThread(QThread*)),
            r0,SLOT(OnSignalStopThread(QThread*)));

    Thing thing;

    // test 1 signal -> 1 slot
    size_t one_one_count=1000;
    std::chrono::time_point<std::chrono::steady_clock> start,end;
    start = std::chrono::steady_clock::now();

    for(size_t i=0; i < one_one_count; i++) {
        emit signalThing(thing);
    }
    emit signalStopThread(&thread_receiver);
    thread_receiver.wait();

    end = std::chrono::steady_clock::now();
    std::chrono::microseconds elapsed_ms =
            std::chrono::duration_cast<std::chrono::microseconds>(
                end-start);

    QString time_to_string =
            QString::number(elapsed_ms.count());

    std::string message0 = "1:1 signal:slot mapping:\n"
                          "1000 signals took: " +
            time_to_string.toStdString() + " us";

    // ============================================================= //

    thread_receiver.start();

    Receiver * r1 = new Receiver();
    Receiver * r2 = new Receiver();
    Receiver * r3 = new Receiver();

    r1->moveToThread(&thread_receiver);
    r2->moveToThread(&thread_receiver);
    r3->moveToThread(&thread_receiver);

    connect(this,SIGNAL(signalThing(Thing)),
            r1,SLOT(OnSignalThing(Thing)));

    connect(this,SIGNAL(signalThing(Thing)),
            r2,SLOT(OnSignalThing(Thing)));

    connect(this,SIGNAL(signalThing(Thing)),
            r3,SLOT(OnSignalThing(Thing)));

    // test 1 signal -> 4 slots
    size_t one_many_count=1000;
    start = std::chrono::steady_clock::now();

    for(size_t i=0; i < one_many_count; i++) {
        emit signalThing(thing);
    }
    emit signalStopThread(&thread_receiver);
    thread_receiver.wait();

    end = std::chrono::steady_clock::now();
    elapsed_ms = std::chrono::duration_cast<
            std::chrono::microseconds>(end-start);

    disconnect(this,SIGNAL(signalThing(Thing)),
               r0,SLOT(OnSignalThing(Thing)));

    disconnect(this,SIGNAL(signalStopThread(QThread*)),
               r0,SLOT(OnSignalStopThread(QThread*)));

    disconnect(this,SIGNAL(signalThing(Thing)),
               r1,SLOT(OnSignalThing(Thing)));

    disconnect(this,SIGNAL(signalThing(Thing)),
               r2,SLOT(OnSignalThing(Thing)));

    disconnect(this,SIGNAL(signalThing(Thing)),
               r3,SLOT(OnSignalThing(Thing)));

    r0->deleteLater();
    r1->deleteLater();
    r2->deleteLater();
    r3->deleteLater();

    time_to_string = QString::number(elapsed_ms.count());

    std::string message1 = "\n\n1:4 signal:slot mapping:\n"
                           "1000 signals took: " +
            time_to_string.toStdString() + " us";


    emit testComplete(QString::fromStdString(message0+message1));
}