用QT中的按钮结束功能
End a function with a button in Qt
我的函数可以按帧处理视频的框架,而且很长。因此,我决定放置暂停和恢复按钮之类的东西,但我不知道如何使用按钮结束运行功能。我猜想它必须用线程做些事情,但我不知道该怎么做。你能给我一些建议吗?
(注意:我正在命名您的函数processFrameOfvideo()只是为了使其更容易参考下面的参考)
如果processFrameOfvideo()函数在主线程中运行,那么在运行函数时,您的GUI很可能会冻结,因为GUI事件循环直到ProcessFrameSofVideo返回。
。如果是这种情况,那么在运行过程fraceframeofvideo()运行时,将GUI取消冻结的快速和差异方法是定期调用qapp-> processevents(例如,从您的内部每50ms或某些东西一次)在ProcessFrameOfvideo()中循环。这将使QT可以在处理视频时以合理及时的方式处理传入的GUI事件(例如鼠标点击),因此例如如果用户在处理视频时调整窗口的大小,则小部件按预期进行调整大小。一旦您有工作,这只是将您的暂停并像往常一样恢复GUI的问题,也许让他们设置一个" pleape_stop_processing"布尔标志,该标志也可以通过ProcessFramesofVideo()的s loop loop定期检查;如果标志为真,则可以提早返回processFrameOfvideo()或等等。
如果您正在寻找比这更优雅的解决方案,另一个选项是产生QThread并在该单独的线程中运行ProcessFrameOfvideo()方法。这将允许ProcessFrameOfvideo()与QT GUI事件循环(尤其是在多核心CPU上)并行真正运行,因此根本不会降低GUI响应能力。ProcessFrameOfvideo()仍然可以使用旧的周期性检查,以了解其是否应暂停或恢复其处理;但是,由于您将涉及多个线程,因此您希望在写入布尔值之前锁定互惠符,然后再解锁sutex,并且您需要在阅读之前让ProcessFrameFvideo()函数锁定相同的rutex布尔值,然后解锁哑光。这将确保CPU的缓存和/或编译器优化不会干扰"看到"彼此的线程变化。
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- 带内存和隔离功能的SQLite
- 为什么在这个代码结束循环中没有得到结束
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 类模板的成员功能的定义在单独的TU中完全专业化
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何在C++中获得"静态纯虚拟"功能?
- 两个文件使用彼此的功能-如何解决
- 返回状态后,功能不会结束
- 在意外功能结束时进行清理,标准等效
- C 功能:读取直到文件结束 - 查找代码中的错误
- 如何结束此功能?(C++)
- ADL和容器功能(开始,结束等)
- 关于检查游戏是否结束的2048年游戏的功能
- 用QT中的按钮结束功能
- 功能结束后的 SEG 故障 (C++)
- 控制达到非空功能结束.我该如何解决这个问题
- 警告:控制达到非无效功能结束 - Qt应用程序
- 控制已结束非无效功能