C++ 在Qt c+中中断一个函数+;当它有计时器的时候

C++ 在Qt c+中中断一个函数+;当它有计时器的时候,c++,qt,timer,qtimer,C++,Qt,Timer,Qtimer,我想用Qt做一个程序。我不会全部发送,但会发送我遇到问题的片段。关键是,我必须中断一个有计时器的函数,但我不知道如何在它等待计时器之前中断它 Qt中使用静态QTimer函数启动的计时器(就像您在main window::Test中所做的那样)根本无法停止,因为您没有可以用来stop()(或以其他方式操纵)计时器的计时器对象。这种计时器在任何情况下都会过期,并且在任何情况下都会发出信号。你需要在你的位置上决定你是否仍然对这个信号感兴趣 当您创建一个显式计时器对象时(就像您在“测试”上的中所做的那样

我想用Qt做一个程序。我不会全部发送,但会发送我遇到问题的片段。关键是,我必须中断一个有计时器的函数,但我不知道如何在它等待计时器之前中断它 Qt中使用静态
QTimer
函数启动的计时器(就像您在
main window::Test
中所做的那样)根本无法停止,因为您没有可以用来
stop()
(或以其他方式操纵)计时器的计时器对象。这种计时器在任何情况下都会过期,并且在任何情况下都会发出信号。你需要在你的位置上决定你是否仍然对这个信号感兴趣

当您创建一个显式计时器对象时(就像您在“测试”上的
中所做的那样单击()
),您只能
停止()
它,或者在最短的过期时间(0)内重新启动()它,使它“立即”过期

如果您不想让已经启动的计时器过期,只需
stop()


您陈述问题的方式表明您可能对Qt中计时器的工作方式有误解。没有什么是“等待”计时器,而是过期的计时器向插槽发送信号。Qt中的“等待”将冻结您的用户界面。

Qt中的计时器从静态
QTimer
函数开始(就像您在
main window::Test
)中所做的那样)根本无法停止,因为没有向您公开的计时器对象可用于
stop()
(或以其他方式操纵)计时器。这种计时器在任何情况下都会过期,并且在任何情况下都会发出信号。您需要在插槽中决定是否仍对信号感兴趣

当您创建一个显式计时器对象时(就像您在“测试”上的
中所做的那样单击()
),您只能
停止()
它,或者在最短的过期时间(0)内重新启动()它,使它“立即”过期

如果您不想让已经启动的计时器过期,只需
stop()


您陈述问题的方式表明可能错误理解计时器在Qt中的工作方式。没有什么是“等待”计时器,而是过期的计时器向插槽发送信号。“等待”在Qt中会冻结您的用户界面。

您陈述问题的方式表明可能错误理解计时器在Qt中的工作方式。没有什么是错误的“等待”计时器,而不是过期的计时器向插槽发送信号。Qt中的“等待”会冻结您的用户界面。您是否意识到您实际上在代码中启动了两个计时器?一个周期计时器和一个单次计时器?您陈述问题的方式表明您可能对计时器在Qt中的工作方式有误解。没有什么是“等待”对于计时器,而不是过期的计时器向插槽发送信号。Qt中的“等待”将冻结您的用户界面。您是否知道您实际上在代码中启动了两个计时器?一个周期计时器和一个单次计时器?非常感谢您的回答!我只想在Qt中实现一个算法,在单击“返回”后,将中断“Test”函数和计时器调用的所有函数。您知道我可以从哪里了解如何实现它吗?或者考虑到时间间隔,了解Qt中编程风格的一般信息吗?您的逻辑仍然是反向的。没有“等待”。如果您不希望运行的计时器过期(导致发送信号),只需
stop()
也是。非常感谢您的回答!我只想在Qt中实现一个算法,在单击“后退”后,该算法将中断“测试”函数和计时器调用的所有函数。你知道我在哪里可以读到关于如何实现它的内容吗?或者考虑到时间间隔的Qt中编程风格的一般性内容吗?你的逻辑仍然是向后的。没有“等待”。如果你不希望运行的计时器过期(导致发送信号),只需
stop()
按下按钮后,计时器将响应,信号将不会被发送(不要忘记删除计时器,因为它看起来有内存泄漏)。重新启动在
测试中启动的另一个单次计时器,以便
停止()
它。