zoukankan      html  css  js  c++  java
  • Qt QProcessDialog(进度对话框)使用

    题记:在GUI程序中,如果需要处理的某一个操作需要的时间较长时,主界面会出现假死,但实际上操作还是在进行,为了处理这种现象,让用户感觉操作一直在进行,可以用到进度条,QT提供了封装的QProcessDialog类实现该功能,该类继承自QDialog类,显示操作的进度。

    官方文档http://qt-project.org/doc/qt-4.8/qprogressdialog.html

    主要的问题:进度值的获取

    用法:帮助文档里的写的已经很清楚了,有相关接口的用法,还提供了一些实例。

    1. 以模态对话框的形式显示

     1 QProgressDialog progress("Copying files...", "Abort Copy", 0, numFiles, this);
     2 
     3    for (int i = 0; i < numFiles; i++)
     4   {
     5          progress.setValue(i);
     6 
     7          if (progress.wasCanceled())
     8              break;
     9          //... copy one file
    10    }
    11    progress.setValue(numFiles);

    这是文档中的例子,首先定义一个对象,然后进行对话框的一些初始化,调用方法对进度对话框进行一些设置,这里除了可以调用QProcessDialog类的方法,也可以调用QDialog类的方法,比如:

    progress.setWindowTitle("处理进度");
    progress.setWindowIcon(QIcon("XX.png"));

    不一定要按照这个代码段的方式进行,进度条最主要的就是setvalue(int)这个方法,在哪里加入这句话设置进度值根据实际情况而定。

    构造函数:QProgressDialog ( const QString & labelText,    //对话框中的正文

                                           const QString & cancelButtonText,      //取消按钮文字

                                           int minimum,    //最小值

                                           int maximum,   //最大值

                                           QWidget * parent = 0,  //父窗口,可以不填该参数

                                           Qt::WindowFlags f = 0 )  //可以不填

    2. 以非模态形式显示

    待学习。。。

    后记:利用QProcessDialog类可以解决处理耗时操作给人带来的软件死掉的假象。当然,这是最简单的解决方法,多线程也可以解决这种问题。

  • 相关阅读:
    HTML5 WebSocket 权威指南 学习一 (第二章 WebSocket API)
    VM虚拟机 Centos7 lnmp环境 配置域名问题 windows浏览器访问的问题
    https方式下 git push 每次都要输入密码的解决办法
    浏览器禁用Cookie
    使用Nginx反向代理进行负载均衡
    使用Ajax异步上传文件
    装配Bean
    关于Struts2配置文件名修改的问题
    NIO
    部署描述符
  • 原文地址:https://www.cnblogs.com/Romi/p/2452558.html
Copyright © 2011-2022 走看看