zoukankan      html  css  js  c++  java
  • Qt 如何处理密集型耗时的事情

    频繁主动调用QCoreApplication::processEvents()

    https://blog.csdn.net/lixiangmaty/article/details/79452553
    https://www.cnblogs.com/findumars/p/5607683.html

    UI线程中耗时函数,可能会导致界面假死。

    QCoreApplication::processEvents()。该函数的作用是让程序处理那些还没有处理的事件,然后再把使用权返回给调用者

    QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents);//它可以忽略用户的输入(鼠标和键盘事件)。

    控制光标显示
    QApplication::setOverrideCursor(Qt::WaitCursor);
    QApplication::restoreOverrideCursor();

    调用 Void QApplication::processEvents() 或 void QApplication::processEvents ( int maxtime ) 来强迫事件循环进行,但是这种做法是有潜在风险的。

    按照QCoreApplication:processEvents()可能会引起递归,导致栈溢出崩溃的说法,当主线程在某个槽函数里正在执行processEvents时,

    刚好有一个能响应此槽函数的信号发送过(肯定是其他线程发的信号), 这时就可能会发生可怕的递归, 导致栈溢出崩溃。

    原因是processEvents在处理自己槽函数的事件时,又会调用到processEvents,进入到无尽的递归中。

  • 相关阅读:
    (三)通用定时器的定时功能(不使用中断)
    (二)STM32中中断优先级理解
    (一)通用定时器的相关介绍
    Ambari client
    Ambari的资源池管理
    Sentry的授权模型
    关于yum
    Ambari-HDP
    Ambari的API调用
    CentOS上面搭建SVN服务器
  • 原文地址:https://www.cnblogs.com/zhangxuan/p/11820049.html
Copyright © 2011-2022 走看看