需要包含头文件
#include <QProgressBar>
#include <QLabel>
.h文件
class MyProgressWidget : public QDialog
{
Q_OBJECT
public:
MyProgressWidget(QWidget* parent = 0);
~MyProgressWidget();
public:
void updateProgress(QString info,int value);//提供给外部来填充进度条的内容。
private:
QProgressBar *pProgressBar;
QLabel *m_pInfoLabel;
};
.cpp文件
MyProgressWidget::MyProgressWidget(QWidget* parent /*= 0*/)
{
pProgressBar = new QProgressBar(this);
m_pInfoLabel = new QLabel(this);
pProgressBar->move(100, 60);
pProgressBar->setOrientation(Qt::Horizontal); //水平方向
pProgressBar->setMinimum(0);//最小值
pProgressBar->setMaximum(100);//最大值
pProgressBar->setValue(0); //当前进度
QVBoxLayout * vl = new QVBoxLayout(this);
vl->addWidget(m_pInfoLabel);
vl->addWidget(pProgressBar);
setLayout(vl);
setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);//设置无边框
setStyleSheet("QWidget{background-color: rgb(255,255,255);}");//背景板是白色
}
MyProgressWidget::~MyProgressWidget()
{
if (pProgressBar)
{
delete pProgressBar;
}
}
void MyProgressWidget::updateProgress(QString info, int value)
{
//qDebug() << "-----进度:" << value;
pProgressBar->setValue(value);
m_pInfoLabel->setText(info);
}
调用:(一般只要定义一个常量就行,不需要搞个指针,防止自己忘了delete)
class XXX: public QMainWindow
{
Q_OBJECT
...
private:
MyProgressWidget pProgressBarWidget;
};
void XXX:TestFun()
{
pProgressBarWidget.show();
pProgressBarWidget.updateProgress(StrToQStr("开始载入"), 0);
...
pProgressBarWidget.updateProgress(StrToQStr("初始化数据页面"),20);
...
pProgressBarWidget.updateProgress(StrToQStr("载入数据成功,欢迎使用本软件"),100);
pProgressBarWidget.accept();
}