Ich verwende Qt5 (C++ 11 aktiviert) auf Windows7.
In meiner app habe ich so etwas wie dieses:Qt C++ 11 Lambda: Ist diese Verbindung (Signal-Slot) korrekt?
connect(ui->alarm, &QCheckBox::stateChanged, [this]{
(ui->alarm->isChecked()) ? m_timer.start() : m_timer.stop();
});
wo alarm
QCheckBox
und m_timer
ist ein QTimer
.
Ich möchte den Timer im laufenden Betrieb starten/stoppen, abhängig vom Status der Alarm-Checkbox.
Ich habe getestet, es scheint zu funktionieren, aber ich bin mir nicht sicher, ob es 100% ok ist ... oder wenn es ein besseres Lambda gibt, es zu tun?
Großartig! Ich werde es morgen testen, aber ich denke, es wird gut funktionieren :) –
Der richtige Test wäre: 'if (state == Qt :: Deaktiviert) m_timer.stop(); sonst if (state == Qt :: Checked) m_timer.start(); '. Sie sollten den Zustand "PartiallyChecked" ignorieren! –
Noch eine Sache: Sie können das Signal toggled (bool checked) anstelle von stateChanged (int state) verwenden – user3302274