我在Windows7上使用Qt5(启用了C ++ 11) 在我的应用程序中,我有类似的东西:
connect(ui->alarm, &QCheckBox::stateChanged, [this]{
(ui->alarm->isChecked()) ? m_timer.start() : m_timer.stop();
});
其中alarm
为QCheckBox
而m_timer
为QTimer
。
我想根据闹钟复选框的状态动态启动/停止计时器。
我测试过,它似乎有效,但我不确定它是否100%正常......或如果有更好的lambda可以做到 ?
答案 0 :(得分:5)
connect(ui->alarm, &QCheckBox::stateChanged, [this](int state){
state ? m_timer.start() : m_timer.stop();
});
这样您就不需要引用ui->alarm
。
在QCheckBox::stateChanged(int state)
中,state
确实是
枚举Qt :: CheckState
Qt ::未选中 = 0该项目未选中。
Qt :: PartiallyChecked = 1项目已部分检查。如果检查了他们的孩子中的一些但不是全部,则可以部分检查分层模型中的项目。
Qt :: Checked = 2项目已经过检查。