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类可以解决处理耗时操作给人带来的软件死掉的假象。当然,这是最简单的解决方法,多线程也可以解决这种问题。

  • 相关阅读:
    Enter passphrase
    laravel扩展包-私有库
    php7中异常
    laravel-admin(自定义表单视图)
    laravel-admin(自定义表单与验证)
    ZJU校赛划水记
    bzoj 4762: 最小集合
    WC2017 颓废记
    bzoj 2337: [HNOI2011]XOR和路径
    bzoj 2870: 最长道路tree
  • 原文地址:https://www.cnblogs.com/Romi/p/2452558.html
Copyright © 2011-2022 走看看