现在的位置: 首页 > 综合 > 正文

Qt QProcessDialog(进度对话框)使用

2013年03月05日 ⁄ 综合 ⁄ 共 1079字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.