Bootstrap

Qt进度条的创建方式

Qt有2种创建进度条的方式:

1、使用QProgressBar类创建进度条

(1)、包含头文件,声明QProgressBar对象指针

#include<QProgressBar>
...
private:
    QProgressBar* pProgressBar;
...

(2)、初始化

...
pProgressBar=new QProgressBar();//初始化指针
Qt::WindowFlags flags=Qt::Dialog|Qt::WindowCloseButtonHint;
pProgressBar->setWindowFlags(flags);//设置窗口标志
QFont font=QFont(tr("宋体"),10);
pProgressBar->setFont(font);//设置进度条的字体
pProgressBar->setWindowTitle(tr("Please Wait Progress Bar"));//设置进度条的窗口标题
pProgressBar->setRange(0,mTotalNum);//设置进度条的数值范围,0~mTotalNum
pProgressBar->setValue(0);//设置进度条的初始值
pProgressBar->show();//显示进度条
...

(3)、在数据处理线程或者定时器响应函数里更新pProgressBar的值

//以下代码段放置于某个数据处理线程或者定时器响应槽函数之中
...
mCurrentNum++;//当前值mCurrentNum自增
if(mCurrentNum<=mTotalNum)//当前值mCurrentNum小于或等于总数量mTotalNum
{
    pProgressBar->setValue(mCurrentNum);
}
else//数据处理完成
{
    pProgressBar->close();//关闭进度条
}
...

(4)、用完记得释放pProgressBar的内存

...
delete pProgressBar;
...

(5)、效果展示

2、 使用QProgressDialog类创建进度条(和QProgressBar类似)

(1)、包含头文件,声明pProgressDialog对象指针

#include<QProgressDialog>
...
private:
    QProgressDialog* pProgressDialog;
...

(2)、初始化

...
pProgressDialog=new QProgressDialog();//初始化指针
Qt::WindowFlags flags=Qt::Dialog|Qt::WindowCloseButtonHint;
pProgressDialog->setWindowFlags(flags);//设置窗口标志
QFont font=QFont(tr("宋体"),10);
pProgressDialog->setFont(font);//设置进度条的字体
pProgressDialog->setRange(0,mTotalNum);//设置进度条的数值范围,0~mTotalNum
pProgressDialog->setValue(0);//设置进度条的初始值
pProgressDialog->setWindowTitle(tr("Please Wait Progress Dialog"));//设置进度条的窗口标题
pProgressDialog->setLabelText("Copying...");//设置进度条的提示内容
pProgressDialog->setCancelButtonText("Cancel");//设置进度条取消按钮的文字
pProgressDialog->show();//显示进度条
...

(3)、在数据处理线程或者定时器响应函数里更新pProgressDialog的值

//以下代码段放置于某个数据处理线程或者定时器响应槽函数之中
...
mCurrentNum++;//当前值mCurrentNum自增
if(mCurrentNum<=mTotalNum)//当前值mCurrentNum小于或等于总数量mTotalNum
{
    pProgressDialog->setValue(mCurrentNum);//更新进度条的当前数值
    if(pProgressDialog->wasCanceled())//进度条取消
    {
        pProgressDialog->close();//关闭进度条
    }
}
else//数据处理完成
{
    pProgressDialog->close();//关闭进度条
}
...

(4)、用完记得释放pProgressDialog的内存

...
delete pProgressDialog;
...

(5)、效果展示

;