Qt 循环中加入QCoreApplication::processEvents退出后台运行

Qt 循环中加入QCoreApplication::processEvents退出后台运行,第1张

你应该使用QApplication::processEvents(),这个是处理GUI程序的。而QCoreApplication::processEvents()是处理控制台程序的,虽然我没看源码,但你关闭窗体时的closeEvent是widget特有的,而控制台不会产生这个事件,所以你用QCoreApplication::processEvents()根据就不会处理顶层窗体的closeEvent,也就是不会退出程序,而窗体自身对closeEvent的处理只是hide隐藏窗体而已,也就造成你的后台运行现象。

1、写个 txt 文件,比如,autuo_shut,其内容有两行如下:

开机执行的原来那个命令

init 0

2、把你开机执行的原来那个命令换成“sh autuo_shut”。

方法一是:connect时添加参数Qt::DirectConnection,以保证其不被放入信号队列,从而达到想要的效果,但这种办法不一定能解决该问题,因为QTextCharFormat类型是Qt的基本类型,是可以作为信号参数使用的,但此处却提示它并不能作为信号参数,所以根本问题不是Qt::DirectConnection所能解决的。

经过进一步检查你会发现问题产生的原因是,该信号被放在了一个线程里面,但线程内信号是必须要放入队列的,所以上面的方法根本不可行,因此解决问题的关键是将相关信号移出run函数,可以采用空参数信号,或等待finished()信号完毕后,用finished()信号去关联一个槽函数来解决,甚至该槽函数就是QThread的私有槽。

public class Utils {

private static long lastClickTime;

public static boolean isFastDoubleClick() {

long time = SystemcurrentTimeMillis();

long timeD = time - lastClickTime;

if ( 0 < timeD && timeD < 500) {

return true;

}

以上就是关于Qt 循环中加入QCoreApplication::processEvents退出后台运行全部的内容,包括:Qt 循环中加入QCoreApplication::processEvents退出后台运行、如何实现qt程序退出linux系统自动关机、关于QT textWidget显示问题 程序异常退出了,求解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9350247.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存