复选框如何能够发出信号?

时间:2017-02-05 07:06:34

标签: qt checkbox

我想知道有没有办法在选中复选框后,它会连续运行相应的代码,直到取消选中。就我而言,它只运行一次。我已经读过,在按钮类中,有自动重复属性。但是,我没有找到任何与复选框相关的属性

1 个答案:

答案 0 :(得分:0)

您需要的是两阶段设置:

  1. 该复选框会触发QTimer是否正在运行
  2. 计时器会触发您要运行的代码
  3. 如果你现在有类似的东西

    connect(checkBox, &QCheckBox::clicked, this, &MyClass::someFunction);
    

    然后你需要这样的东西(假设一个支持C ++ 11的环境)

    QTimer *timer = new QTimer(checkbox);
    timer->setInterval(...); // how quickly you want to repeat
    connect(timer, &QTimer::timeout, this, &MyClass::someFunction);
    
    connect(checkBox, &QCheckBox::toggled, timer,
           [timer] (bool checked) { if (checked) timer->start(); else timer->stop(); });
    

    如果您的环境还不具备C ++ 11功能,那么您需要一个接收器插槽作为成员checked(bool)MyClass中的timer信号,以便可以在那个插槽。