2017-02-05 21 views
1

我想知道是否有任何方法,一旦复选框被选中,它会持续运行相应的代码,直到它未被选中。就我而言,它只运行一次。我已经阅读了按钮类,有自动重复属性。但是,我没有找到复选框复选框如何可以发出信号?

回答

0

相关的任何属性,你需要的是一个两上演设置:

  1. 复选框触发QTimer是否正在运行或停止
  2. 定时器触发你想要的代码运行

如果您目前有这样的事情

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 capabable,您将需要一个接收器插槽中MyClasschecked(bool)信号和timer作为成员,因此可以在该插槽中访问它。

+0

这是一个好主意。现在我正在使用不同的定时器。我想知道使用多个定时器进行这种池化是一种好的做法还是不行?而且,我已经启动了所有具有1ms超时延迟的定时器定时器。那个怎么样? –

+0

你是指多个复选框的多个定时器?即每个复选框一个计时器? 在唤醒方面不是最佳的,但更容易理解事物如何组合在一起。我会留下来,除非它给你运行时间的问题,但1ms听起来太短的时间间隔。但是,如果您的应用程序的运行时行为正常,请使用什么工作 –

+0

对于每个复选框,不是一个计时器,而是对整个应用程序使用五个计时器。好的是它正在工作。我已经做出延迟ims,因为我会在实时视频提要中最终使用我的代码。将更新它是如何工作的 –