QT子线程如何关闭定时器

各位巨佬,本人初学QT和C++,想在子线程的run函数里开启一个定时器,然后创建一个EmergencyStop按钮,按下关闭定时器,但会显示定时器不能从其他线程关闭,如何操作?还是说通过关闭线程来关闭定时器,请求帮助

img

img

img

可以通过在子线程中使用信号槽的方式来控制主线程中的定时器,从而实现在子线程中开启或关闭定时器。

首先,在主线程中创建定时器,将其设置为自启动和单次触发模式,并在定时器超时时执行需要执行的操作。
然后,将定时器对象的指针传递给子线程,并在子线程中通过该指针对象启动或停止定时器。
接着,在子线程中创建EmergencyStop按钮,并连接其clicked信号到一个槽函数。在该槽函数中,发送一个信号到主线程,通知其关闭定时器。由于定时器是在主线程中创建的,所以只能在主线程中关闭定时器。主线程接收到信号后,执行关闭定时器的操作。

没玩过QT,但是操作过pyqt5,差不多的逻辑,如果只是为了按钮关闭定时器,可以直接在按钮对应的槽函数关闭,如果非要在子线程里关闭,子线程定义一个信号,当子线程执行到某一步需要关闭定时器时,发送该信号,信号关联到定时器关闭的函数即可(友情说明,定时器是不可以在子线程操作的)