1
我想知道是否有任何方法,一旦复选框被选中,它会持续运行相应的代码,直到它未被选中。就我而言,它只运行一次。我已经阅读了按钮类,有自动重复属性。但是,我没有找到复选框复选框如何可以发出信号?
我想知道是否有任何方法,一旦复选框被选中,它会持续运行相应的代码,直到它未被选中。就我而言,它只运行一次。我已经阅读了按钮类,有自动重复属性。但是,我没有找到复选框复选框如何可以发出信号?
相关的任何属性,你需要的是一个两上演设置:
QTimer
是否正在运行或停止如果您目前有这样的事情
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,您将需要一个接收器插槽中MyClass
的checked(bool)
信号和timer
作为成员,因此可以在该插槽中访问它。
这是一个好主意。现在我正在使用不同的定时器。我想知道使用多个定时器进行这种池化是一种好的做法还是不行?而且,我已经启动了所有具有1ms超时延迟的定时器定时器。那个怎么样? –
你是指多个复选框的多个定时器?即每个复选框一个计时器? 在唤醒方面不是最佳的,但更容易理解事物如何组合在一起。我会留下来,除非它给你运行时间的问题,但1ms听起来太短的时间间隔。但是,如果您的应用程序的运行时行为正常,请使用什么工作 –
对于每个复选框,不是一个计时器,而是对整个应用程序使用五个计时器。好的是它正在工作。我已经做出延迟ims,因为我会在实时视频提要中最终使用我的代码。将更新它是如何工作的 –